<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>CryptoAuthLib: Certificate manipulation methods (atcacert_)</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">CryptoAuthLib
   </div>
   <div id="projectbrief">Microchip CryptoAuthentication Library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('a00990.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">Certificate manipulation methods (atcacert_)</div>  </div>
</div><!--header-->
<div class="contents">

<p>These methods provide convenient ways to perform certification I/O with CryptoAuth chips and perform certificate manipulation in memory.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01045.html">atcacert_tm_utc_s</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01049.html">atcacert_device_loc_s</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01053.html">atcacert_cert_loc_s</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01057.html">atcacert_cert_element_s</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01061.html">atcacert_def_s</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a01065.html">atcacert_build_state_s</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:gaa93f0eb578d23995850d61f7d61c55c1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaa93f0eb578d23995850d61f7d61c55c1">FALSE</a>&#160;&#160;&#160;(0)</td></tr>
<tr class="separator:gaa93f0eb578d23995850d61f7d61c55c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa8cecfc5c5c054d2875c03e77b7be15d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaa8cecfc5c5c054d2875c03e77b7be15d">TRUE</a>&#160;&#160;&#160;(1)</td></tr>
<tr class="separator:gaa8cecfc5c5c054d2875c03e77b7be15d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7bd1ad830360fc8b988f855da6d0d5ba"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga7bd1ad830360fc8b988f855da6d0d5ba">ATCACERT_E_SUCCESS</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:ga7bd1ad830360fc8b988f855da6d0d5ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Operation completed successfully.  <a href="#ga7bd1ad830360fc8b988f855da6d0d5ba">More...</a><br /></td></tr>
<tr class="separator:ga7bd1ad830360fc8b988f855da6d0d5ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga048a6bb9781dbbc402409a172f976f74"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga048a6bb9781dbbc402409a172f976f74">ATCACERT_E_ERROR</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:ga048a6bb9781dbbc402409a172f976f74"><td class="mdescLeft">&#160;</td><td class="mdescRight">General error.  <a href="#ga048a6bb9781dbbc402409a172f976f74">More...</a><br /></td></tr>
<tr class="separator:ga048a6bb9781dbbc402409a172f976f74"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga47509d283523ab1892fb8746d6f4e37d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga47509d283523ab1892fb8746d6f4e37d">ATCACERT_E_BAD_PARAMS</a>&#160;&#160;&#160;2</td></tr>
<tr class="memdesc:ga47509d283523ab1892fb8746d6f4e37d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invalid/bad parameter passed to function.  <a href="#ga47509d283523ab1892fb8746d6f4e37d">More...</a><br /></td></tr>
<tr class="separator:ga47509d283523ab1892fb8746d6f4e37d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7a2e774fc8b12c4045dea335a86afca6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga7a2e774fc8b12c4045dea335a86afca6">ATCACERT_E_BUFFER_TOO_SMALL</a>&#160;&#160;&#160;3</td></tr>
<tr class="memdesc:ga7a2e774fc8b12c4045dea335a86afca6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Supplied buffer for output is too small to hold the result.  <a href="#ga7a2e774fc8b12c4045dea335a86afca6">More...</a><br /></td></tr>
<tr class="separator:ga7a2e774fc8b12c4045dea335a86afca6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaea155533fdd352d6602d3e2fc717930f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaea155533fdd352d6602d3e2fc717930f">ATCACERT_E_DECODING_ERROR</a>&#160;&#160;&#160;4</td></tr>
<tr class="memdesc:gaea155533fdd352d6602d3e2fc717930f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data being decoded/parsed has an invalid format.  <a href="#gaea155533fdd352d6602d3e2fc717930f">More...</a><br /></td></tr>
<tr class="separator:gaea155533fdd352d6602d3e2fc717930f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaafd66d6744314225ead24b3901bd6372"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaafd66d6744314225ead24b3901bd6372">ATCACERT_E_INVALID_DATE</a>&#160;&#160;&#160;5</td></tr>
<tr class="memdesc:gaafd66d6744314225ead24b3901bd6372"><td class="mdescLeft">&#160;</td><td class="mdescRight">Date is invalid.  <a href="#gaafd66d6744314225ead24b3901bd6372">More...</a><br /></td></tr>
<tr class="separator:gaafd66d6744314225ead24b3901bd6372"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4b6db1523875a2b1453ef5e16989ecd4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga4b6db1523875a2b1453ef5e16989ecd4">ATCACERT_E_UNIMPLEMENTED</a>&#160;&#160;&#160;6</td></tr>
<tr class="memdesc:ga4b6db1523875a2b1453ef5e16989ecd4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function is unimplemented for the current configuration.  <a href="#ga4b6db1523875a2b1453ef5e16989ecd4">More...</a><br /></td></tr>
<tr class="separator:ga4b6db1523875a2b1453ef5e16989ecd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5a7cb98e18ad338f2eaf6594acb67c32"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga5a7cb98e18ad338f2eaf6594acb67c32">ATCACERT_E_UNEXPECTED_ELEM_SIZE</a>&#160;&#160;&#160;7</td></tr>
<tr class="memdesc:ga5a7cb98e18ad338f2eaf6594acb67c32"><td class="mdescLeft">&#160;</td><td class="mdescRight">A certificate element size was not what was expected.  <a href="#ga5a7cb98e18ad338f2eaf6594acb67c32">More...</a><br /></td></tr>
<tr class="separator:ga5a7cb98e18ad338f2eaf6594acb67c32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8e3e7c64650c92364bbac17f6a75474a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga8e3e7c64650c92364bbac17f6a75474a">ATCACERT_E_ELEM_MISSING</a>&#160;&#160;&#160;8</td></tr>
<tr class="memdesc:ga8e3e7c64650c92364bbac17f6a75474a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The certificate element isn't defined for the certificate definition.  <a href="#ga8e3e7c64650c92364bbac17f6a75474a">More...</a><br /></td></tr>
<tr class="separator:ga8e3e7c64650c92364bbac17f6a75474a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga62604c78d688530173e203b02df180fa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga62604c78d688530173e203b02df180fa">ATCACERT_E_ELEM_OUT_OF_BOUNDS</a>&#160;&#160;&#160;9</td></tr>
<tr class="memdesc:ga62604c78d688530173e203b02df180fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Certificate element is out of bounds for the given certificate.  <a href="#ga62604c78d688530173e203b02df180fa">More...</a><br /></td></tr>
<tr class="separator:ga62604c78d688530173e203b02df180fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga822ee0620c8d2d12ff971b9b35f9f5cd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga822ee0620c8d2d12ff971b9b35f9f5cd">ATCACERT_E_BAD_CERT</a>&#160;&#160;&#160;10</td></tr>
<tr class="memdesc:ga822ee0620c8d2d12ff971b9b35f9f5cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Certificate structure is bad in some way.  <a href="#ga822ee0620c8d2d12ff971b9b35f9f5cd">More...</a><br /></td></tr>
<tr class="separator:ga822ee0620c8d2d12ff971b9b35f9f5cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga01010ef58d52a05292f6a70ff3d53ce8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga01010ef58d52a05292f6a70ff3d53ce8">ATCACERT_E_WRONG_CERT_DEF</a>&#160;&#160;&#160;11</td></tr>
<tr class="separator:ga01010ef58d52a05292f6a70ff3d53ce8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae1da5e02cd9b4ee7b8617d7bce0a5b5d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gae1da5e02cd9b4ee7b8617d7bce0a5b5d">ATCACERT_E_VERIFY_FAILED</a>&#160;&#160;&#160;12</td></tr>
<tr class="memdesc:gae1da5e02cd9b4ee7b8617d7bce0a5b5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Certificate or challenge/response verification failed.  <a href="#gae1da5e02cd9b4ee7b8617d7bce0a5b5d">More...</a><br /></td></tr>
<tr class="separator:gae1da5e02cd9b4ee7b8617d7bce0a5b5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2396e500bd36c2316a1a6e13e3117958"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga2396e500bd36c2316a1a6e13e3117958">ATCACERT_E_INVALID_TRANSFORM</a>&#160;&#160;&#160;13</td></tr>
<tr class="memdesc:ga2396e500bd36c2316a1a6e13e3117958"><td class="mdescLeft">&#160;</td><td class="mdescRight">Invalid transform passed to function.  <a href="#ga2396e500bd36c2316a1a6e13e3117958">More...</a><br /></td></tr>
<tr class="separator:ga2396e500bd36c2316a1a6e13e3117958"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4cd9a96f5434fa3bc256878031d63846"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga4cd9a96f5434fa3bc256878031d63846">DATEFMT_ISO8601_SEP_SIZE</a>&#160;&#160;&#160;(20)</td></tr>
<tr class="separator:ga4cd9a96f5434fa3bc256878031d63846"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga420f3d438f3f8f7c140512910e54d09a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga420f3d438f3f8f7c140512910e54d09a">DATEFMT_RFC5280_UTC_SIZE</a>&#160;&#160;&#160;(13)</td></tr>
<tr class="separator:ga420f3d438f3f8f7c140512910e54d09a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafe13e835d79405f28daa3449f732ebcd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gafe13e835d79405f28daa3449f732ebcd">DATEFMT_POSIX_UINT32_BE_SIZE</a>&#160;&#160;&#160;(4)</td></tr>
<tr class="separator:gafe13e835d79405f28daa3449f732ebcd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa7c545ab9944dc7261d689680e2b00f4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaa7c545ab9944dc7261d689680e2b00f4">DATEFMT_POSIX_UINT32_LE_SIZE</a>&#160;&#160;&#160;(4)</td></tr>
<tr class="separator:gaa7c545ab9944dc7261d689680e2b00f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae058e0e8944f408fa251bc4f4136d79c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gae058e0e8944f408fa251bc4f4136d79c">DATEFMT_RFC5280_GEN_SIZE</a>&#160;&#160;&#160;(15)</td></tr>
<tr class="separator:gae058e0e8944f408fa251bc4f4136d79c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae920fb7b153cf98e0d10365ec1d364de"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gae920fb7b153cf98e0d10365ec1d364de">DATEFMT_MAX_SIZE</a>&#160;&#160;&#160;<a class="el" href="a00990.html#ga4cd9a96f5434fa3bc256878031d63846">DATEFMT_ISO8601_SEP_SIZE</a></td></tr>
<tr class="separator:gae920fb7b153cf98e0d10365ec1d364de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga82737078e820e6d6beeca7466841e43d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga82737078e820e6d6beeca7466841e43d">ATCACERT_DATE_FORMAT_SIZES_COUNT</a>&#160;&#160;&#160;5</td></tr>
<tr class="separator:ga82737078e820e6d6beeca7466841e43d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga81a3a91e9aa4aca39ca6fe8a7a94b121"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01045.html">atcacert_tm_utc_s</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a></td></tr>
<tr class="separator:ga81a3a91e9aa4aca39ca6fe8a7a94b121"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f389df0f74fd3593ab7e3a4d380433f"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00990.html#ga62a103735770a0f935a472fc2c1d78db">atcacert_date_format_e</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga7f389df0f74fd3593ab7e3a4d380433f">atcacert_date_format_t</a></td></tr>
<tr class="separator:ga7f389df0f74fd3593ab7e3a4d380433f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8fcfb1307197295422ace828b40ee37d"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00990.html#ga5430f01929cd7269e04db08d1f28642f">atcacert_cert_type_e</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga8fcfb1307197295422ace828b40ee37d">atcacert_cert_type_t</a></td></tr>
<tr class="separator:ga8fcfb1307197295422ace828b40ee37d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa557358df9a164d6c1f14b1f53662c6c"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00990.html#ga813047a656af7fe578d28fd54c840e8e">atcacert_cert_sn_src_e</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaa557358df9a164d6c1f14b1f53662c6c">atcacert_cert_sn_src_t</a></td></tr>
<tr class="separator:gaa557358df9a164d6c1f14b1f53662c6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga294899ca77a6801288e1ccb148de1f8b"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00990.html#ga1c0876228cb459f64347a63f3bae4c73">atcacert_device_zone_e</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga294899ca77a6801288e1ccb148de1f8b">atcacert_device_zone_t</a></td></tr>
<tr class="separator:ga294899ca77a6801288e1ccb148de1f8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9026eafcf2dca2c5a4427841e50ac17c"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00990.html#ga121ffde3250c4ca6947c680868aa6017">atcacert_transform_e</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga9026eafcf2dca2c5a4427841e50ac17c">atcacert_transform_t</a></td></tr>
<tr class="memdesc:ga9026eafcf2dca2c5a4427841e50ac17c"><td class="mdescLeft">&#160;</td><td class="mdescRight">How to transform the data from the device to the certificate.  <a href="#ga9026eafcf2dca2c5a4427841e50ac17c">More...</a><br /></td></tr>
<tr class="separator:ga9026eafcf2dca2c5a4427841e50ac17c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4889317187186736e62beb7538b870b2"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="a00990.html#ga77184d0c71198b489ea9b57d07da824e">atcacert_std_cert_element_e</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga4889317187186736e62beb7538b870b2">atcacert_std_cert_element_t</a></td></tr>
<tr class="separator:ga4889317187186736e62beb7538b870b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0fb6e40d2f1496215af2f9ae23c861a0"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01049.html">atcacert_device_loc_s</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a></td></tr>
<tr class="separator:ga0fb6e40d2f1496215af2f9ae23c861a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae7c32139e6dce0fe25b4598299a77df6"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01053.html">atcacert_cert_loc_s</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gae7c32139e6dce0fe25b4598299a77df6">atcacert_cert_loc_t</a></td></tr>
<tr class="separator:gae7c32139e6dce0fe25b4598299a77df6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8d14206d455a7a7835ed613e57c20dd3"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01057.html">atcacert_cert_element_s</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga8d14206d455a7a7835ed613e57c20dd3">atcacert_cert_element_t</a></td></tr>
<tr class="separator:ga8d14206d455a7a7835ed613e57c20dd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae9e78b17340263e97844ccaf72ca16ac"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01061.html">atcacert_def_s</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a></td></tr>
<tr class="separator:gae9e78b17340263e97844ccaf72ca16ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga92ccf01a2c37be9caa7d840846672c83"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="a01065.html">atcacert_build_state_s</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga92ccf01a2c37be9caa7d840846672c83">atcacert_build_state_t</a></td></tr>
<tr class="separator:ga92ccf01a2c37be9caa7d840846672c83"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:ga62a103735770a0f935a472fc2c1d78db"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga62a103735770a0f935a472fc2c1d78db">atcacert_date_format_e</a> { <br />
&#160;&#160;<a class="el" href="a00990.html#gga62a103735770a0f935a472fc2c1d78dba593aa8634c6a3d493cb7bebe4a40a8b5">DATEFMT_ISO8601_SEP</a>, 
<a class="el" href="a00990.html#gga62a103735770a0f935a472fc2c1d78dbad080b870f84643db2fdc7934560c322d">DATEFMT_RFC5280_UTC</a>, 
<a class="el" href="a00990.html#gga62a103735770a0f935a472fc2c1d78dbacfca1392e4cde6f2d467f9f69641890a">DATEFMT_POSIX_UINT32_BE</a>, 
<a class="el" href="a00990.html#gga62a103735770a0f935a472fc2c1d78dba24c30a16c9f26257dcd0464b7aa69161">DATEFMT_POSIX_UINT32_LE</a>, 
<br />
&#160;&#160;<a class="el" href="a00990.html#gga62a103735770a0f935a472fc2c1d78dbac95f38ee25fdaad80fb77dcf9d71a93e">DATEFMT_RFC5280_GEN</a>
<br />
 }</td></tr>
<tr class="separator:ga62a103735770a0f935a472fc2c1d78db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5430f01929cd7269e04db08d1f28642f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga5430f01929cd7269e04db08d1f28642f">atcacert_cert_type_e</a> { <a class="el" href="a00990.html#gga5430f01929cd7269e04db08d1f28642fa82bc16ac5283813ee3ffe7cddf8e2b44">CERTTYPE_X509</a>, 
<a class="el" href="a00990.html#gga5430f01929cd7269e04db08d1f28642fa92c401741edaf606af7056851db7dddb">CERTTYPE_CUSTOM</a>
 }</td></tr>
<tr class="separator:ga5430f01929cd7269e04db08d1f28642f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga813047a656af7fe578d28fd54c840e8e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga813047a656af7fe578d28fd54c840e8e">atcacert_cert_sn_src_e</a> { <br />
&#160;&#160;<a class="el" href="a00990.html#gga813047a656af7fe578d28fd54c840e8ea1b3e4833214ba25ba3d665135b2b6cd1">SNSRC_STORED</a> = 0x0, 
<a class="el" href="a00990.html#gga813047a656af7fe578d28fd54c840e8ea4c213faf0171fcc6aeb27a1ca344342b">SNSRC_STORED_DYNAMIC</a> = 0x7, 
<a class="el" href="a00990.html#gga813047a656af7fe578d28fd54c840e8ea338258d51f0eb1c5d7ef9f0e639f5e41">SNSRC_DEVICE_SN</a> = 0x8, 
<a class="el" href="a00990.html#gga813047a656af7fe578d28fd54c840e8eabda5814e7da6c10dc243749dea79ffff">SNSRC_SIGNER_ID</a> = 0x9, 
<br />
&#160;&#160;<a class="el" href="a00990.html#gga813047a656af7fe578d28fd54c840e8ea5dadea2da6020b492727eb1da6c4bb1e">SNSRC_PUB_KEY_HASH</a> = 0xA, 
<a class="el" href="a00990.html#gga813047a656af7fe578d28fd54c840e8eaffba4ece10bc933c6b408a2b4e234ab2">SNSRC_DEVICE_SN_HASH</a> = 0xB, 
<a class="el" href="a00990.html#gga813047a656af7fe578d28fd54c840e8eacaf00502661bc7b9c260ca68831928b5">SNSRC_PUB_KEY_HASH_POS</a> = 0xC, 
<a class="el" href="a00990.html#gga813047a656af7fe578d28fd54c840e8eab87e9124d93ca45243eacac5b96452b7">SNSRC_DEVICE_SN_HASH_POS</a> = 0xD, 
<br />
&#160;&#160;<a class="el" href="a00990.html#gga813047a656af7fe578d28fd54c840e8ea83bf725c47007c842da4a8e93b1bf972">SNSRC_PUB_KEY_HASH_RAW</a> = 0xE, 
<a class="el" href="a00990.html#gga813047a656af7fe578d28fd54c840e8ea2d608b2eeb6da309c1e9b2af7060d909">SNSRC_DEVICE_SN_HASH_RAW</a> = 0xF
<br />
 }</td></tr>
<tr class="separator:ga813047a656af7fe578d28fd54c840e8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1c0876228cb459f64347a63f3bae4c73"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga1c0876228cb459f64347a63f3bae4c73">atcacert_device_zone_e</a> { <a class="el" href="a00990.html#gga1c0876228cb459f64347a63f3bae4c73a4856bc2fcbda0be68832968204126207">DEVZONE_CONFIG</a> = 0x00, 
<a class="el" href="a00990.html#gga1c0876228cb459f64347a63f3bae4c73ae42ffc066a13ac1f38195d2cf4e60cea">DEVZONE_OTP</a> = 0x01, 
<a class="el" href="a00990.html#gga1c0876228cb459f64347a63f3bae4c73a774ecb8e950d309498a9aa64933d95cb">DEVZONE_DATA</a> = 0x02, 
<a class="el" href="a00990.html#gga1c0876228cb459f64347a63f3bae4c73afe6b6aedf2a765638f3c62817db11f05">DEVZONE_NONE</a> = 0x07
 }</td></tr>
<tr class="separator:ga1c0876228cb459f64347a63f3bae4c73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga121ffde3250c4ca6947c680868aa6017"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga121ffde3250c4ca6947c680868aa6017">atcacert_transform_e</a> { <br />
&#160;&#160;<a class="el" href="a00990.html#gga121ffde3250c4ca6947c680868aa6017ac87f695cb78c44a56c6306e226c87d84">TF_NONE</a>, 
<a class="el" href="a00990.html#gga121ffde3250c4ca6947c680868aa6017acfa23727589758659b759cc4c1b8e817">TF_REVERSE</a>, 
<a class="el" href="a00990.html#gga121ffde3250c4ca6947c680868aa6017a25e35bbc33f0152a8bc24e07f1a71bf7">TF_BIN2HEX_UC</a>, 
<a class="el" href="a00990.html#gga121ffde3250c4ca6947c680868aa6017a2682cdac7651ff7c68303c6b240b4979">TF_BIN2HEX_LC</a>, 
<br />
&#160;&#160;<a class="el" href="a00990.html#gga121ffde3250c4ca6947c680868aa6017aacc5e6c227eb55801343878d1dd6b779">TF_HEX2BIN_UC</a>, 
<a class="el" href="a00990.html#gga121ffde3250c4ca6947c680868aa6017a55a7f98db8c5480ffb0d2456a91689fd">TF_HEX2BIN_LC</a>, 
<a class="el" href="a00990.html#gga121ffde3250c4ca6947c680868aa6017a651f9d504c16191f36cf1b1762d8c0aa">TF_BIN2HEX_SPACE_UC</a>, 
<a class="el" href="a00990.html#gga121ffde3250c4ca6947c680868aa6017a0cc6a8630e1d28499201e23f355a89fe">TF_BIN2HEX_SPACE_LC</a>, 
<br />
&#160;&#160;<a class="el" href="a00990.html#gga121ffde3250c4ca6947c680868aa6017a62b34cc88494773ef3035a91deaafd08">TF_HEX2BIN_SPACE_UC</a>, 
<a class="el" href="a00990.html#gga121ffde3250c4ca6947c680868aa6017af1a0d28ef10a4e4f74d6bfbfc371300d">TF_HEX2BIN_SPACE_LC</a>
<br />
 }</td></tr>
<tr class="memdesc:ga121ffde3250c4ca6947c680868aa6017"><td class="mdescLeft">&#160;</td><td class="mdescRight">How to transform the data from the device to the certificate.  <a href="a00990.html#ga121ffde3250c4ca6947c680868aa6017">More...</a><br /></td></tr>
<tr class="separator:ga121ffde3250c4ca6947c680868aa6017"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga77184d0c71198b489ea9b57d07da824e"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga77184d0c71198b489ea9b57d07da824e">atcacert_std_cert_element_e</a> { <br />
&#160;&#160;<a class="el" href="a00990.html#gga77184d0c71198b489ea9b57d07da824eaf78a51bddeca05e1a525f26792b6de68">STDCERT_PUBLIC_KEY</a>, 
<a class="el" href="a00990.html#gga77184d0c71198b489ea9b57d07da824ea8eab5679d330212bb87b2413ea82b7cc">STDCERT_SIGNATURE</a>, 
<a class="el" href="a00990.html#gga77184d0c71198b489ea9b57d07da824ea2f3039692a71546e581fcaf8a8a53f15">STDCERT_ISSUE_DATE</a>, 
<a class="el" href="a00990.html#gga77184d0c71198b489ea9b57d07da824ea886b91f34d6839fe9e9217490530c604">STDCERT_EXPIRE_DATE</a>, 
<br />
&#160;&#160;<a class="el" href="a00990.html#gga77184d0c71198b489ea9b57d07da824eadfaaad6a933423f63fc3233bd84b90d3">STDCERT_SIGNER_ID</a>, 
<a class="el" href="a00990.html#gga77184d0c71198b489ea9b57d07da824ea73b3d53d4e70a48fd3fdeb0143493efc">STDCERT_CERT_SN</a>, 
<a class="el" href="a00990.html#gga77184d0c71198b489ea9b57d07da824ea6a9cddad9f6b552f0fe5f63fc57cf106">STDCERT_AUTH_KEY_ID</a>, 
<a class="el" href="a00990.html#gga77184d0c71198b489ea9b57d07da824ea97400647cc539ce999c0b9f95d736585">STDCERT_SUBJ_KEY_ID</a>, 
<br />
&#160;&#160;<a class="el" href="a00990.html#gga77184d0c71198b489ea9b57d07da824ead9a44768825ebcc67750d8e4172dc60f">STDCERT_NUM_ELEMENTS</a>
<br />
 }</td></tr>
<tr class="separator:ga77184d0c71198b489ea9b57d07da824e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga9a6222ede3a3f3f331882b613066b8a8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga9a6222ede3a3f3f331882b613066b8a8">atcacert_read_device_loc</a> (const <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *device_loc, uint8_t *data)</td></tr>
<tr class="memdesc:ga9a6222ede3a3f3f331882b613066b8a8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read the data from a device location.  <a href="#ga9a6222ede3a3f3f331882b613066b8a8">More...</a><br /></td></tr>
<tr class="separator:ga9a6222ede3a3f3f331882b613066b8a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaf13dfd0ea4e563194cec6e62892b5c4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaaf13dfd0ea4e563194cec6e62892b5c4">atcacert_read_cert</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t ca_public_key[64], uint8_t *cert, size_t *cert_size)</td></tr>
<tr class="memdesc:gaaf13dfd0ea4e563194cec6e62892b5c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the certificate specified by the certificate definition from the ATECC508A device.  <a href="#gaaf13dfd0ea4e563194cec6e62892b5c4">More...</a><br /></td></tr>
<tr class="separator:gaaf13dfd0ea4e563194cec6e62892b5c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga71ea9d7c93c2fecb87a36b1343397fad"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga71ea9d7c93c2fecb87a36b1343397fad">atcacert_write_cert</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size)</td></tr>
<tr class="memdesc:ga71ea9d7c93c2fecb87a36b1343397fad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Take a full certificate and write it to the ATECC508A device according to the certificate definition.  <a href="#ga71ea9d7c93c2fecb87a36b1343397fad">More...</a><br /></td></tr>
<tr class="separator:ga71ea9d7c93c2fecb87a36b1343397fad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabd66cb9a5c50c7c62e3bc0a8ff0fc4d6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gabd66cb9a5c50c7c62e3bc0a8ff0fc4d6">atcacert_create_csr</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *csr_def, uint8_t *csr, size_t *csr_size)</td></tr>
<tr class="memdesc:gabd66cb9a5c50c7c62e3bc0a8ff0fc4d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a CSR specified by the CSR definition from the ATECC508A device. This process involves reading the dynamic CSR data from the device and combining it with the template found in the CSR definition, then signing it. Return the CSR int der format.  <a href="#gabd66cb9a5c50c7c62e3bc0a8ff0fc4d6">More...</a><br /></td></tr>
<tr class="separator:gabd66cb9a5c50c7c62e3bc0a8ff0fc4d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0b492025e27a705b1792b6276eeaaf68"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga0b492025e27a705b1792b6276eeaaf68">atcacert_create_csr_pem</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *csr_def, char *csr, size_t *csr_size)</td></tr>
<tr class="memdesc:ga0b492025e27a705b1792b6276eeaaf68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a CSR specified by the CSR definition from the ATECC508A device. This process involves reading the dynamic CSR data from the device and combining it with the template found in the CSR definition, then signing it. Return the CSR int der format.  <a href="#ga0b492025e27a705b1792b6276eeaaf68">More...</a><br /></td></tr>
<tr class="separator:ga0b492025e27a705b1792b6276eeaaf68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9f7223a578ce5c07a831638106c6ff6c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga9f7223a578ce5c07a831638106c6ff6c">atcacert_get_response</a> (uint8_t device_private_key_slot, const uint8_t challenge[32], uint8_t response[64])</td></tr>
<tr class="memdesc:ga9f7223a578ce5c07a831638106c6ff6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the response to a challenge sent from the host.  <a href="#ga9f7223a578ce5c07a831638106c6ff6c">More...</a><br /></td></tr>
<tr class="separator:ga9f7223a578ce5c07a831638106c6ff6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaab946b2ea5dba6d1addacc995a6989ae"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaab946b2ea5dba6d1addacc995a6989ae">atcacert_date_enc</a> (<a class="el" href="a00990.html#ga7f389df0f74fd3593ab7e3a4d380433f">atcacert_date_format_t</a> format, const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp, uint8_t *formatted_date, size_t *formatted_date_size)</td></tr>
<tr class="memdesc:gaab946b2ea5dba6d1addacc995a6989ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Format a timestamp according to the format type.  <a href="#gaab946b2ea5dba6d1addacc995a6989ae">More...</a><br /></td></tr>
<tr class="separator:gaab946b2ea5dba6d1addacc995a6989ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga368d038c02673b1e6ddacfd175786e6a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga368d038c02673b1e6ddacfd175786e6a">atcacert_date_dec</a> (<a class="el" href="a00990.html#ga7f389df0f74fd3593ab7e3a4d380433f">atcacert_date_format_t</a> format, const uint8_t *formatted_date, size_t formatted_date_size, <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp)</td></tr>
<tr class="memdesc:ga368d038c02673b1e6ddacfd175786e6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parse a formatted timestamp according to the specified format.  <a href="#ga368d038c02673b1e6ddacfd175786e6a">More...</a><br /></td></tr>
<tr class="separator:ga368d038c02673b1e6ddacfd175786e6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5da5a0589a6168aafd34b4aac4e07553"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga5da5a0589a6168aafd34b4aac4e07553">atcacert_date_enc_compcert</a> (const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *issue_date, uint8_t expire_years, uint8_t enc_dates[3])</td></tr>
<tr class="memdesc:ga5da5a0589a6168aafd34b4aac4e07553"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encode the issue and expire dates in the format used by the compressed certificate.  <a href="#ga5da5a0589a6168aafd34b4aac4e07553">More...</a><br /></td></tr>
<tr class="separator:ga5da5a0589a6168aafd34b4aac4e07553"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaba31331bcfab203c786004b027512fab"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaba31331bcfab203c786004b027512fab">atcacert_date_dec_compcert</a> (const uint8_t enc_dates[3], <a class="el" href="a00990.html#ga7f389df0f74fd3593ab7e3a4d380433f">atcacert_date_format_t</a> expire_date_format, <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *issue_date, <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *expire_date)</td></tr>
<tr class="memdesc:gaba31331bcfab203c786004b027512fab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode the issue and expire dates from the format used by the compressed certificate.  <a href="#gaba31331bcfab203c786004b027512fab">More...</a><br /></td></tr>
<tr class="separator:gaba31331bcfab203c786004b027512fab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1d267b06c94e1db2aa2f6e91df1c843f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga1d267b06c94e1db2aa2f6e91df1c843f">atcacert_date_get_max_date</a> (<a class="el" href="a00990.html#ga7f389df0f74fd3593ab7e3a4d380433f">atcacert_date_format_t</a> format, <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp)</td></tr>
<tr class="memdesc:ga1d267b06c94e1db2aa2f6e91df1c843f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the maximum date available for the given format.  <a href="#ga1d267b06c94e1db2aa2f6e91df1c843f">More...</a><br /></td></tr>
<tr class="separator:ga1d267b06c94e1db2aa2f6e91df1c843f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae40aeb71d824e8bbe3233e86f3fb6a3f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gae40aeb71d824e8bbe3233e86f3fb6a3f">atcacert_date_enc_iso8601_sep</a> (const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp, uint8_t formatted_date[<a class="el" href="a00990.html#ga4cd9a96f5434fa3bc256878031d63846">DATEFMT_ISO8601_SEP_SIZE</a>])</td></tr>
<tr class="separator:gae40aeb71d824e8bbe3233e86f3fb6a3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3ff21be0f011ce56dfde5e2ac99e17ce"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga3ff21be0f011ce56dfde5e2ac99e17ce">atcacert_date_dec_iso8601_sep</a> (const uint8_t formatted_date[<a class="el" href="a00990.html#ga4cd9a96f5434fa3bc256878031d63846">DATEFMT_ISO8601_SEP_SIZE</a>], <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp)</td></tr>
<tr class="separator:ga3ff21be0f011ce56dfde5e2ac99e17ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa83e2f3a3f83b321dade6cd3211136db"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaa83e2f3a3f83b321dade6cd3211136db">atcacert_date_enc_rfc5280_utc</a> (const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp, uint8_t formatted_date[<a class="el" href="a00990.html#ga420f3d438f3f8f7c140512910e54d09a">DATEFMT_RFC5280_UTC_SIZE</a>])</td></tr>
<tr class="separator:gaa83e2f3a3f83b321dade6cd3211136db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7fa37d88f9405a3557110e58468f9e6e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga7fa37d88f9405a3557110e58468f9e6e">atcacert_date_dec_rfc5280_utc</a> (const uint8_t formatted_date[<a class="el" href="a00990.html#ga420f3d438f3f8f7c140512910e54d09a">DATEFMT_RFC5280_UTC_SIZE</a>], <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp)</td></tr>
<tr class="separator:ga7fa37d88f9405a3557110e58468f9e6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaeb955dfc5b73719e2ecca542c2fc249"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaaeb955dfc5b73719e2ecca542c2fc249">atcacert_date_enc_rfc5280_gen</a> (const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp, uint8_t formatted_date[<a class="el" href="a00990.html#gae058e0e8944f408fa251bc4f4136d79c">DATEFMT_RFC5280_GEN_SIZE</a>])</td></tr>
<tr class="separator:gaaeb955dfc5b73719e2ecca542c2fc249"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadd219151c074c3ec7785d68741a1cae1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gadd219151c074c3ec7785d68741a1cae1">atcacert_date_dec_rfc5280_gen</a> (const uint8_t formatted_date[<a class="el" href="a00990.html#gae058e0e8944f408fa251bc4f4136d79c">DATEFMT_RFC5280_GEN_SIZE</a>], <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp)</td></tr>
<tr class="separator:gadd219151c074c3ec7785d68741a1cae1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1160e4293d7831e15a47e7b3f47013ca"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga1160e4293d7831e15a47e7b3f47013ca">atcacert_date_enc_posix_uint32_be</a> (const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp, uint8_t formatted_date[<a class="el" href="a00990.html#gafe13e835d79405f28daa3449f732ebcd">DATEFMT_POSIX_UINT32_BE_SIZE</a>])</td></tr>
<tr class="separator:ga1160e4293d7831e15a47e7b3f47013ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga37893ca05c0e3ccbcec3725228b8a818"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga37893ca05c0e3ccbcec3725228b8a818">atcacert_date_dec_posix_uint32_be</a> (const uint8_t formatted_date[<a class="el" href="a00990.html#gafe13e835d79405f28daa3449f732ebcd">DATEFMT_POSIX_UINT32_BE_SIZE</a>], <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp)</td></tr>
<tr class="separator:ga37893ca05c0e3ccbcec3725228b8a818"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4825cb7a817fa9471cfe30a1aa984b8f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga4825cb7a817fa9471cfe30a1aa984b8f">atcacert_date_enc_posix_uint32_le</a> (const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp, uint8_t formatted_date[<a class="el" href="a00990.html#gaa7c545ab9944dc7261d689680e2b00f4">DATEFMT_POSIX_UINT32_LE_SIZE</a>])</td></tr>
<tr class="separator:ga4825cb7a817fa9471cfe30a1aa984b8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab5bbaaf84f1c19409ee276241e9e2f6d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gab5bbaaf84f1c19409ee276241e9e2f6d">atcacert_date_dec_posix_uint32_le</a> (const uint8_t formatted_date[<a class="el" href="a00990.html#gaa7c545ab9944dc7261d689680e2b00f4">DATEFMT_POSIX_UINT32_LE_SIZE</a>], <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp)</td></tr>
<tr class="separator:gab5bbaaf84f1c19409ee276241e9e2f6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga84f1aeed7b88889d5bf01f21dbaaf398"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga84f1aeed7b88889d5bf01f21dbaaf398">atcacert_get_device_locs</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *device_locs, size_t *device_locs_count, size_t device_locs_max_count, size_t block_size)</td></tr>
<tr class="memdesc:ga84f1aeed7b88889d5bf01f21dbaaf398"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add all the device locations required to rebuild the specified certificate (cert_def) to a device locations list.  <a href="#ga84f1aeed7b88889d5bf01f21dbaaf398">More...</a><br /></td></tr>
<tr class="separator:ga84f1aeed7b88889d5bf01f21dbaaf398"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gace8ac017f58840c296fe2cf29bdaa2fe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gace8ac017f58840c296fe2cf29bdaa2fe">atcacert_cert_build_start</a> (<a class="el" href="a00990.html#ga92ccf01a2c37be9caa7d840846672c83">atcacert_build_state_t</a> *build_state, const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, uint8_t *cert, size_t *cert_size, const uint8_t ca_public_key[64])</td></tr>
<tr class="memdesc:gace8ac017f58840c296fe2cf29bdaa2fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Starts the certificate rebuilding process.  <a href="#gace8ac017f58840c296fe2cf29bdaa2fe">More...</a><br /></td></tr>
<tr class="separator:gace8ac017f58840c296fe2cf29bdaa2fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga626158cfe54b84903885b2cc6c3880e4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga626158cfe54b84903885b2cc6c3880e4">atcacert_cert_build_process</a> (<a class="el" href="a00990.html#ga92ccf01a2c37be9caa7d840846672c83">atcacert_build_state_t</a> *build_state, const <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *device_loc, const uint8_t *device_data)</td></tr>
<tr class="memdesc:ga626158cfe54b84903885b2cc6c3880e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process information read from the ATECC device. If it contains information for the certificate, it will be incorporated into the certificate.  <a href="#ga626158cfe54b84903885b2cc6c3880e4">More...</a><br /></td></tr>
<tr class="separator:ga626158cfe54b84903885b2cc6c3880e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9e594a491dccf61a638be46da5d40ff9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga9e594a491dccf61a638be46da5d40ff9">atcacert_cert_build_finish</a> (<a class="el" href="a00990.html#ga92ccf01a2c37be9caa7d840846672c83">atcacert_build_state_t</a> *build_state)</td></tr>
<tr class="memdesc:ga9e594a491dccf61a638be46da5d40ff9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Completes any final certificate processing required after all data from the device has been incorporated.  <a href="#ga9e594a491dccf61a638be46da5d40ff9">More...</a><br /></td></tr>
<tr class="separator:ga9e594a491dccf61a638be46da5d40ff9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga240f94a03feb298e5c618677f2962a5a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga240f94a03feb298e5c618677f2962a5a">atcacert_get_device_data</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, const <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *device_loc, uint8_t *device_data)</td></tr>
<tr class="memdesc:ga240f94a03feb298e5c618677f2962a5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the dynamic data that would be saved to the specified device location. This function is primarily used to break down a full certificate into the dynamic components to be saved to a device.  <a href="#ga240f94a03feb298e5c618677f2962a5a">More...</a><br /></td></tr>
<tr class="separator:ga240f94a03feb298e5c618677f2962a5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4c4d5fe988ebface171689f3aa122e12"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga4c4d5fe988ebface171689f3aa122e12">atcacert_set_subj_public_key</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, uint8_t *cert, size_t cert_size, const uint8_t subj_public_key[64])</td></tr>
<tr class="memdesc:ga4c4d5fe988ebface171689f3aa122e12"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the subject public key and subject key ID in a certificate.  <a href="#ga4c4d5fe988ebface171689f3aa122e12">More...</a><br /></td></tr>
<tr class="separator:ga4c4d5fe988ebface171689f3aa122e12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab4fac3fd2bf5a227140cc3012a4dad02"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gab4fac3fd2bf5a227140cc3012a4dad02">atcacert_get_subj_public_key</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, uint8_t subj_public_key[64])</td></tr>
<tr class="memdesc:gab4fac3fd2bf5a227140cc3012a4dad02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the subject public key from a certificate.  <a href="#gab4fac3fd2bf5a227140cc3012a4dad02">More...</a><br /></td></tr>
<tr class="separator:gab4fac3fd2bf5a227140cc3012a4dad02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2843ebd40b7f0b6b4bf22cd447fa90e0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga2843ebd40b7f0b6b4bf22cd447fa90e0">atcacert_get_subj_key_id</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, uint8_t subj_key_id[20])</td></tr>
<tr class="memdesc:ga2843ebd40b7f0b6b4bf22cd447fa90e0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the subject key ID from a certificate.  <a href="#ga2843ebd40b7f0b6b4bf22cd447fa90e0">More...</a><br /></td></tr>
<tr class="separator:ga2843ebd40b7f0b6b4bf22cd447fa90e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf1f3cdf5e1e65c9abcbe98ae046d9bf2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaf1f3cdf5e1e65c9abcbe98ae046d9bf2">atcacert_set_signature</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, uint8_t *cert, size_t *cert_size, size_t max_cert_size, const uint8_t signature[64])</td></tr>
<tr class="memdesc:gaf1f3cdf5e1e65c9abcbe98ae046d9bf2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the signature in a certificate. This may alter the size of the X.509 certificates.  <a href="#gaf1f3cdf5e1e65c9abcbe98ae046d9bf2">More...</a><br /></td></tr>
<tr class="separator:gaf1f3cdf5e1e65c9abcbe98ae046d9bf2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf55b75df5e523e2d275ebb8cbe36fec6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaf55b75df5e523e2d275ebb8cbe36fec6">atcacert_get_signature</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, uint8_t signature[64])</td></tr>
<tr class="memdesc:gaf55b75df5e523e2d275ebb8cbe36fec6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the signature from a certificate.  <a href="#gaf55b75df5e523e2d275ebb8cbe36fec6">More...</a><br /></td></tr>
<tr class="separator:gaf55b75df5e523e2d275ebb8cbe36fec6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga36d4893ccd152a8ec18f84f90a5e3cb5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga36d4893ccd152a8ec18f84f90a5e3cb5">atcacert_set_issue_date</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, uint8_t *cert, size_t cert_size, const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp)</td></tr>
<tr class="memdesc:ga36d4893ccd152a8ec18f84f90a5e3cb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the issue date (notBefore) in a certificate. Will be formatted according to the date format specified in the certificate definition.  <a href="#ga36d4893ccd152a8ec18f84f90a5e3cb5">More...</a><br /></td></tr>
<tr class="separator:ga36d4893ccd152a8ec18f84f90a5e3cb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga51f7b996909bc9cae783bcaf0fe7082b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga51f7b996909bc9cae783bcaf0fe7082b">atcacert_get_issue_date</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp)</td></tr>
<tr class="memdesc:ga51f7b996909bc9cae783bcaf0fe7082b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the issue date from a certificate. Will be parsed according to the date format specified in the certificate definition.  <a href="#ga51f7b996909bc9cae783bcaf0fe7082b">More...</a><br /></td></tr>
<tr class="separator:ga51f7b996909bc9cae783bcaf0fe7082b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad499cd0bdce799a3278f99c80e0f9143"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gad499cd0bdce799a3278f99c80e0f9143">atcacert_set_expire_date</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, uint8_t *cert, size_t cert_size, const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp)</td></tr>
<tr class="memdesc:gad499cd0bdce799a3278f99c80e0f9143"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the expire date (notAfter) in a certificate. Will be formatted according to the date format specified in the certificate definition.  <a href="#gad499cd0bdce799a3278f99c80e0f9143">More...</a><br /></td></tr>
<tr class="separator:gad499cd0bdce799a3278f99c80e0f9143"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8d1d761d35cf36feea5c626bb1d70ab2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga8d1d761d35cf36feea5c626bb1d70ab2">atcacert_get_expire_date</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *timestamp)</td></tr>
<tr class="memdesc:ga8d1d761d35cf36feea5c626bb1d70ab2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the expire date from a certificate. Will be parsed according to the date format specified in the certificate definition.  <a href="#ga8d1d761d35cf36feea5c626bb1d70ab2">More...</a><br /></td></tr>
<tr class="separator:ga8d1d761d35cf36feea5c626bb1d70ab2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga82ca7cff42ee4496a40076faac7ff6f6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga82ca7cff42ee4496a40076faac7ff6f6">atcacert_set_signer_id</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, uint8_t *cert, size_t cert_size, const uint8_t signer_id[2])</td></tr>
<tr class="memdesc:ga82ca7cff42ee4496a40076faac7ff6f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the signer ID in a certificate. Will be formatted as 4 upper-case hex digits.  <a href="#ga82ca7cff42ee4496a40076faac7ff6f6">More...</a><br /></td></tr>
<tr class="separator:ga82ca7cff42ee4496a40076faac7ff6f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1201f3c1a20b5b105f9160bea104b102"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga1201f3c1a20b5b105f9160bea104b102">atcacert_get_signer_id</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, uint8_t signer_id[2])</td></tr>
<tr class="memdesc:ga1201f3c1a20b5b105f9160bea104b102"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the signer ID from a certificate. Will be parsed as 4 upper-case hex digits.  <a href="#ga1201f3c1a20b5b105f9160bea104b102">More...</a><br /></td></tr>
<tr class="separator:ga1201f3c1a20b5b105f9160bea104b102"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0a5a5fb234b9aa7093ae3a0bb2785f73"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga0a5a5fb234b9aa7093ae3a0bb2785f73">atcacert_set_cert_sn</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, uint8_t *cert, size_t *cert_size, size_t max_cert_size, const uint8_t *cert_sn, size_t cert_sn_size)</td></tr>
<tr class="memdesc:ga0a5a5fb234b9aa7093ae3a0bb2785f73"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the certificate serial number in a certificate.  <a href="#ga0a5a5fb234b9aa7093ae3a0bb2785f73">More...</a><br /></td></tr>
<tr class="separator:ga0a5a5fb234b9aa7093ae3a0bb2785f73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae1f109cb8edea615c0f7126527208452"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gae1f109cb8edea615c0f7126527208452">atcacert_gen_cert_sn</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, uint8_t *cert, size_t cert_size, const uint8_t device_sn[9])</td></tr>
<tr class="memdesc:gae1f109cb8edea615c0f7126527208452"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the certificate serial number by generating it from other information in the certificate using the scheme specified by sn_source in cert_def. See the.  <a href="#gae1f109cb8edea615c0f7126527208452">More...</a><br /></td></tr>
<tr class="separator:gae1f109cb8edea615c0f7126527208452"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf64c228c28f42f15e9b43457146d1504"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaf64c228c28f42f15e9b43457146d1504">atcacert_get_cert_sn</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, uint8_t *cert_sn, size_t *cert_sn_size)</td></tr>
<tr class="memdesc:gaf64c228c28f42f15e9b43457146d1504"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the certificate serial number from a certificate.  <a href="#gaf64c228c28f42f15e9b43457146d1504">More...</a><br /></td></tr>
<tr class="separator:gaf64c228c28f42f15e9b43457146d1504"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7b22f63ccda2cba10d5ca3dd9c39a06c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga7b22f63ccda2cba10d5ca3dd9c39a06c">atcacert_set_auth_key_id</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, uint8_t *cert, size_t cert_size, const uint8_t auth_public_key[64])</td></tr>
<tr class="memdesc:ga7b22f63ccda2cba10d5ca3dd9c39a06c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the authority key ID in a certificate. Note that this takes the actual public key creates a key ID from it.  <a href="#ga7b22f63ccda2cba10d5ca3dd9c39a06c">More...</a><br /></td></tr>
<tr class="separator:ga7b22f63ccda2cba10d5ca3dd9c39a06c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga94a3b57e412fe2cfddf92fdc8e54a41e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga94a3b57e412fe2cfddf92fdc8e54a41e">atcacert_set_auth_key_id_raw</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, uint8_t *cert, size_t cert_size, const uint8_t *auth_key_id)</td></tr>
<tr class="memdesc:ga94a3b57e412fe2cfddf92fdc8e54a41e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the authority key ID in a certificate.  <a href="#ga94a3b57e412fe2cfddf92fdc8e54a41e">More...</a><br /></td></tr>
<tr class="separator:ga94a3b57e412fe2cfddf92fdc8e54a41e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadf6c26dd4333931acf2b8f6ac9a5f422"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gadf6c26dd4333931acf2b8f6ac9a5f422">atcacert_get_auth_key_id</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, uint8_t auth_key_id[20])</td></tr>
<tr class="memdesc:gadf6c26dd4333931acf2b8f6ac9a5f422"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the authority key ID from a certificate.  <a href="#gadf6c26dd4333931acf2b8f6ac9a5f422">More...</a><br /></td></tr>
<tr class="separator:gadf6c26dd4333931acf2b8f6ac9a5f422"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2e2c59c41193e71b1a4b96f58642bb49"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga2e2c59c41193e71b1a4b96f58642bb49">atcacert_set_comp_cert</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, uint8_t *cert, size_t *cert_size, size_t max_cert_size, const uint8_t comp_cert[72])</td></tr>
<tr class="memdesc:ga2e2c59c41193e71b1a4b96f58642bb49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the signature, issue date, expire date, and signer ID found in the compressed certificate. This also checks fields common between the cert_def and the compressed certificate to make sure they match.  <a href="#ga2e2c59c41193e71b1a4b96f58642bb49">More...</a><br /></td></tr>
<tr class="separator:ga2e2c59c41193e71b1a4b96f58642bb49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9a7903692035d06b5d1a45c3b56fce3a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga9a7903692035d06b5d1a45c3b56fce3a">atcacert_get_comp_cert</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, uint8_t comp_cert[72])</td></tr>
<tr class="memdesc:ga9a7903692035d06b5d1a45c3b56fce3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate the compressed certificate for the given certificate.  <a href="#ga9a7903692035d06b5d1a45c3b56fce3a">More...</a><br /></td></tr>
<tr class="separator:ga9a7903692035d06b5d1a45c3b56fce3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9883eaf43aa94e7a29c1bdf13514185c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga9883eaf43aa94e7a29c1bdf13514185c">atcacert_get_tbs</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, const uint8_t **tbs, size_t *tbs_size)</td></tr>
<tr class="memdesc:ga9883eaf43aa94e7a29c1bdf13514185c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the TBS data in a certificate.  <a href="#ga9883eaf43aa94e7a29c1bdf13514185c">More...</a><br /></td></tr>
<tr class="separator:ga9883eaf43aa94e7a29c1bdf13514185c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0b2fd4ca54a1fde2d0d669b1fc11284a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga0b2fd4ca54a1fde2d0d669b1fc11284a">atcacert_get_tbs_digest</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, uint8_t tbs_digest[32])</td></tr>
<tr class="memdesc:ga0b2fd4ca54a1fde2d0d669b1fc11284a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the SHA256 digest of certificate's TBS data.  <a href="#ga0b2fd4ca54a1fde2d0d669b1fc11284a">More...</a><br /></td></tr>
<tr class="separator:ga0b2fd4ca54a1fde2d0d669b1fc11284a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5dacb3927ef7eacfaf8c4e28641f7bce"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga5dacb3927ef7eacfaf8c4e28641f7bce">atcacert_set_cert_element</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const <a class="el" href="a00990.html#gae7c32139e6dce0fe25b4598299a77df6">atcacert_cert_loc_t</a> *cert_loc, uint8_t *cert, size_t cert_size, const uint8_t *data, size_t data_size)</td></tr>
<tr class="memdesc:ga5dacb3927ef7eacfaf8c4e28641f7bce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an element in a certificate. The data_size must match the size in cert_loc.  <a href="#ga5dacb3927ef7eacfaf8c4e28641f7bce">More...</a><br /></td></tr>
<tr class="separator:ga5dacb3927ef7eacfaf8c4e28641f7bce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacdb102fcae9f3a822a19b2ca487b415d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gacdb102fcae9f3a822a19b2ca487b415d">atcacert_get_cert_element</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const <a class="el" href="a00990.html#gae7c32139e6dce0fe25b4598299a77df6">atcacert_cert_loc_t</a> *cert_loc, const uint8_t *cert, size_t cert_size, uint8_t *data, size_t data_size)</td></tr>
<tr class="memdesc:gacdb102fcae9f3a822a19b2ca487b415d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets an element from a certificate.  <a href="#gacdb102fcae9f3a822a19b2ca487b415d">More...</a><br /></td></tr>
<tr class="separator:gacdb102fcae9f3a822a19b2ca487b415d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad93de2bdacdcfe04abb0e991a8401388"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gad93de2bdacdcfe04abb0e991a8401388">atcacert_get_key_id</a> (const uint8_t public_key[64], uint8_t key_id[20])</td></tr>
<tr class="memdesc:gad93de2bdacdcfe04abb0e991a8401388"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates the key ID for a given public ECC P256 key.  <a href="#gad93de2bdacdcfe04abb0e991a8401388">More...</a><br /></td></tr>
<tr class="separator:gad93de2bdacdcfe04abb0e991a8401388"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga593780a1837f517ce75bb19d9c5c9db7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga593780a1837f517ce75bb19d9c5c9db7">atcacert_merge_device_loc</a> (<a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *device_locs, size_t *device_locs_count, size_t device_locs_max_count, const <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *device_loc, size_t block_size)</td></tr>
<tr class="memdesc:ga593780a1837f517ce75bb19d9c5c9db7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Merge a new device location into a list of device locations. If the new location overlaps with an existing location, the existing one will be modified to encompass both. Otherwise the new location is appended to the end of the list.  <a href="#ga593780a1837f517ce75bb19d9c5c9db7">More...</a><br /></td></tr>
<tr class="separator:ga593780a1837f517ce75bb19d9c5c9db7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad2e2ceb6fb7614254a94e89ba244fee7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gad2e2ceb6fb7614254a94e89ba244fee7">atcacert_is_device_loc_overlap</a> (const <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *device_loc1, const <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *device_loc2)</td></tr>
<tr class="memdesc:gad2e2ceb6fb7614254a94e89ba244fee7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines if the two device locations overlap.  <a href="#gad2e2ceb6fb7614254a94e89ba244fee7">More...</a><br /></td></tr>
<tr class="separator:gad2e2ceb6fb7614254a94e89ba244fee7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7337facc592df42d585b22345e333ae3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga7337facc592df42d585b22345e333ae3">atcacert_public_key_add_padding</a> (const uint8_t raw_key[64], uint8_t padded_key[72])</td></tr>
<tr class="memdesc:ga7337facc592df42d585b22345e333ae3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Takes a raw P256 ECC public key and converts it to the padded version used by ATECC devices. Input and output buffers can point to the same location to do an in-place transform.  <a href="#ga7337facc592df42d585b22345e333ae3">More...</a><br /></td></tr>
<tr class="separator:ga7337facc592df42d585b22345e333ae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadb83dfb792f1e6e90ce6a3d39f64e129"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gadb83dfb792f1e6e90ce6a3d39f64e129">atcacert_public_key_remove_padding</a> (const uint8_t padded_key[72], uint8_t raw_key[64])</td></tr>
<tr class="memdesc:gadb83dfb792f1e6e90ce6a3d39f64e129"><td class="mdescLeft">&#160;</td><td class="mdescRight">Takes a padded public key used by ATECC devices and converts it to a raw P256 ECC public key. Input and output buffers can point to the same location to do an in-place transform.  <a href="#gadb83dfb792f1e6e90ce6a3d39f64e129">More...</a><br /></td></tr>
<tr class="separator:gadb83dfb792f1e6e90ce6a3d39f64e129"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaea332f6f0adfdbed2cbaac15e19a4cc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaaea332f6f0adfdbed2cbaac15e19a4cc">atcacert_transform_data</a> (<a class="el" href="a00990.html#ga9026eafcf2dca2c5a4427841e50ac17c">atcacert_transform_t</a> transform, const uint8_t *data, size_t data_size, uint8_t *destination, size_t *destination_size)</td></tr>
<tr class="memdesc:gaaea332f6f0adfdbed2cbaac15e19a4cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Apply the specified transform to the specified data.  <a href="#gaaea332f6f0adfdbed2cbaac15e19a4cc">More...</a><br /></td></tr>
<tr class="separator:gaaea332f6f0adfdbed2cbaac15e19a4cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2e29c301e8378aeb99ec3675a4b9d7a0"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga2e29c301e8378aeb99ec3675a4b9d7a0">atcacert_max_cert_size</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, size_t *max_cert_size)</td></tr>
<tr class="memdesc:ga2e29c301e8378aeb99ec3675a4b9d7a0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the maximum possible certificate size in bytes for a given cert def. Certificate can be variable size, so this gives an appropriate buffer size when reading the certificates.  <a href="#ga2e29c301e8378aeb99ec3675a4b9d7a0">More...</a><br /></td></tr>
<tr class="separator:ga2e29c301e8378aeb99ec3675a4b9d7a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaafc9ef8e0164226481b670fde0223e13"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaafc9ef8e0164226481b670fde0223e13">atcacert_der_enc_length</a> (uint32_t length, uint8_t *der_length, size_t *der_length_size)</td></tr>
<tr class="memdesc:gaafc9ef8e0164226481b670fde0223e13"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encode a length in DER format.  <a href="#gaafc9ef8e0164226481b670fde0223e13">More...</a><br /></td></tr>
<tr class="separator:gaafc9ef8e0164226481b670fde0223e13"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeee4091e249b8fc202d5126a8374eeb1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaeee4091e249b8fc202d5126a8374eeb1">atcacert_der_dec_length</a> (const uint8_t *der_length, size_t *der_length_size, uint32_t *length)</td></tr>
<tr class="memdesc:gaeee4091e249b8fc202d5126a8374eeb1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode a DER format length.  <a href="#gaeee4091e249b8fc202d5126a8374eeb1">More...</a><br /></td></tr>
<tr class="separator:gaeee4091e249b8fc202d5126a8374eeb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga165018175f52421ea26fb33ccf335108"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga165018175f52421ea26fb33ccf335108">atcacert_der_adjust_length</a> (uint8_t *der_length, size_t *der_length_size, int delta_length, uint32_t *new_length)</td></tr>
<tr class="separator:ga165018175f52421ea26fb33ccf335108"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf156257cda87df879f54c07e80bc0e8d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaf156257cda87df879f54c07e80bc0e8d">atcacert_der_enc_integer</a> (const uint8_t *int_data, size_t int_data_size, uint8_t is_unsigned, uint8_t *der_int, size_t *der_int_size)</td></tr>
<tr class="memdesc:gaf156257cda87df879f54c07e80bc0e8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Encode an ASN.1 integer in DER format, including tag and length fields.  <a href="#gaf156257cda87df879f54c07e80bc0e8d">More...</a><br /></td></tr>
<tr class="separator:gaf156257cda87df879f54c07e80bc0e8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3b095e11adc55a61e3cfb2957d0c6c77"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga3b095e11adc55a61e3cfb2957d0c6c77">atcacert_der_dec_integer</a> (const uint8_t *der_int, size_t *der_int_size, uint8_t *int_data, size_t *int_data_size)</td></tr>
<tr class="memdesc:ga3b095e11adc55a61e3cfb2957d0c6c77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decode an ASN.1 DER encoded integer.  <a href="#ga3b095e11adc55a61e3cfb2957d0c6c77">More...</a><br /></td></tr>
<tr class="separator:ga3b095e11adc55a61e3cfb2957d0c6c77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3583ada6da51d31cfe819894e8a9deeb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga3583ada6da51d31cfe819894e8a9deeb">atcacert_der_enc_ecdsa_sig_value</a> (const uint8_t raw_sig[64], uint8_t *der_sig, size_t *der_sig_size)</td></tr>
<tr class="memdesc:ga3583ada6da51d31cfe819894e8a9deeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Formats a raw ECDSA P256 signature in the DER encoding found in X.509 certificates.  <a href="#ga3583ada6da51d31cfe819894e8a9deeb">More...</a><br /></td></tr>
<tr class="separator:ga3583ada6da51d31cfe819894e8a9deeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac3f22b75f15e8508f35d99b95d955842"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gac3f22b75f15e8508f35d99b95d955842">atcacert_der_dec_ecdsa_sig_value</a> (const uint8_t *der_sig, size_t *der_sig_size, uint8_t raw_sig[64])</td></tr>
<tr class="memdesc:gac3f22b75f15e8508f35d99b95d955842"><td class="mdescLeft">&#160;</td><td class="mdescRight">Parses an ECDSA P256 signature in the DER encoding as found in X.509 certificates.  <a href="#gac3f22b75f15e8508f35d99b95d955842">More...</a><br /></td></tr>
<tr class="separator:gac3f22b75f15e8508f35d99b95d955842"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga81e92ea606e86051afa84f2fac4898d6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga81e92ea606e86051afa84f2fac4898d6">atcacert_verify_cert_hw</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, const uint8_t ca_public_key[64])</td></tr>
<tr class="memdesc:ga81e92ea606e86051afa84f2fac4898d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verify a certificate against its certificate authority's public key using the host's ATECC device for crypto functions.  <a href="#ga81e92ea606e86051afa84f2fac4898d6">More...</a><br /></td></tr>
<tr class="separator:ga81e92ea606e86051afa84f2fac4898d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga208c1ea765f192bd86b26964fbb5edcb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga208c1ea765f192bd86b26964fbb5edcb">atcacert_gen_challenge_hw</a> (uint8_t challenge[32])</td></tr>
<tr class="memdesc:ga208c1ea765f192bd86b26964fbb5edcb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a random challenge to be sent to the client using the RNG on the host's ATECC device.  <a href="#ga208c1ea765f192bd86b26964fbb5edcb">More...</a><br /></td></tr>
<tr class="separator:ga208c1ea765f192bd86b26964fbb5edcb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafeffa7a36a7b5a343f5f568d090e8eed"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gafeffa7a36a7b5a343f5f568d090e8eed">atcacert_verify_response_hw</a> (const uint8_t device_public_key[64], const uint8_t challenge[32], const uint8_t response[64])</td></tr>
<tr class="memdesc:gafeffa7a36a7b5a343f5f568d090e8eed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verify a client's response to a challenge using the host's ATECC device for crypto functions.  <a href="#gafeffa7a36a7b5a343f5f568d090e8eed">More...</a><br /></td></tr>
<tr class="separator:gafeffa7a36a7b5a343f5f568d090e8eed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab78271af8c3e2837810fcdae6e3f5e28"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gab78271af8c3e2837810fcdae6e3f5e28">atcacert_verify_cert_sw</a> (const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *cert_def, const uint8_t *cert, size_t cert_size, const uint8_t ca_public_key[64])</td></tr>
<tr class="memdesc:gab78271af8c3e2837810fcdae6e3f5e28"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verify a certificate against its certificate authority's public key using software crypto functions.The function is currently not implemented.  <a href="#gab78271af8c3e2837810fcdae6e3f5e28">More...</a><br /></td></tr>
<tr class="separator:gab78271af8c3e2837810fcdae6e3f5e28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa9829e5aa1ece3d3a933db9827d3e8f3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#gaa9829e5aa1ece3d3a933db9827d3e8f3">atcacert_gen_challenge_sw</a> (uint8_t challenge[32])</td></tr>
<tr class="memdesc:gaa9829e5aa1ece3d3a933db9827d3e8f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generate a random challenge to be sent to the client using a software PRNG.The function is currently not implemented.  <a href="#gaa9829e5aa1ece3d3a933db9827d3e8f3">More...</a><br /></td></tr>
<tr class="separator:gaa9829e5aa1ece3d3a933db9827d3e8f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9d5bf9ec84d28a0412377818805c32c4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga9d5bf9ec84d28a0412377818805c32c4">atcacert_verify_response_sw</a> (const uint8_t device_public_key[64], const uint8_t challenge[32], const uint8_t response[64])</td></tr>
<tr class="memdesc:ga9d5bf9ec84d28a0412377818805c32c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verify a client's response to a challenge using software crypto functions.The function is currently not implemented.  <a href="#ga9d5bf9ec84d28a0412377818805c32c4">More...</a><br /></td></tr>
<tr class="separator:ga9d5bf9ec84d28a0412377818805c32c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ga8b93faeabd399250750a5ed9401d897e"><td class="memItemLeft" align="right" valign="top">const size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00990.html#ga8b93faeabd399250750a5ed9401d897e">ATCACERT_DATE_FORMAT_SIZES</a> [<a class="el" href="a00990.html#ga82737078e820e6d6beeca7466841e43d">ATCACERT_DATE_FORMAT_SIZES_COUNT</a>]</td></tr>
<tr class="separator:ga8b93faeabd399250750a5ed9401d897e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>These methods provide convenient ways to perform certification I/O with CryptoAuth chips and perform certificate manipulation in memory. </p>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="ga82737078e820e6d6beeca7466841e43d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga82737078e820e6d6beeca7466841e43d">&#9670;&nbsp;</a></span>ATCACERT_DATE_FORMAT_SIZES_COUNT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_DATE_FORMAT_SIZES_COUNT&#160;&#160;&#160;5</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga822ee0620c8d2d12ff971b9b35f9f5cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga822ee0620c8d2d12ff971b9b35f9f5cd">&#9670;&nbsp;</a></span>ATCACERT_E_BAD_CERT</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_BAD_CERT&#160;&#160;&#160;10</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Certificate structure is bad in some way. </p>

</div>
</div>
<a id="ga47509d283523ab1892fb8746d6f4e37d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga47509d283523ab1892fb8746d6f4e37d">&#9670;&nbsp;</a></span>ATCACERT_E_BAD_PARAMS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_BAD_PARAMS&#160;&#160;&#160;2</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Invalid/bad parameter passed to function. </p>

</div>
</div>
<a id="ga7a2e774fc8b12c4045dea335a86afca6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7a2e774fc8b12c4045dea335a86afca6">&#9670;&nbsp;</a></span>ATCACERT_E_BUFFER_TOO_SMALL</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_BUFFER_TOO_SMALL&#160;&#160;&#160;3</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Supplied buffer for output is too small to hold the result. </p>

</div>
</div>
<a id="gaea155533fdd352d6602d3e2fc717930f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaea155533fdd352d6602d3e2fc717930f">&#9670;&nbsp;</a></span>ATCACERT_E_DECODING_ERROR</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_DECODING_ERROR&#160;&#160;&#160;4</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Data being decoded/parsed has an invalid format. </p>

</div>
</div>
<a id="ga8e3e7c64650c92364bbac17f6a75474a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8e3e7c64650c92364bbac17f6a75474a">&#9670;&nbsp;</a></span>ATCACERT_E_ELEM_MISSING</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_ELEM_MISSING&#160;&#160;&#160;8</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The certificate element isn't defined for the certificate definition. </p>

</div>
</div>
<a id="ga62604c78d688530173e203b02df180fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga62604c78d688530173e203b02df180fa">&#9670;&nbsp;</a></span>ATCACERT_E_ELEM_OUT_OF_BOUNDS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_ELEM_OUT_OF_BOUNDS&#160;&#160;&#160;9</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Certificate element is out of bounds for the given certificate. </p>

</div>
</div>
<a id="ga048a6bb9781dbbc402409a172f976f74"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga048a6bb9781dbbc402409a172f976f74">&#9670;&nbsp;</a></span>ATCACERT_E_ERROR</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_ERROR&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>General error. </p>

</div>
</div>
<a id="gaafd66d6744314225ead24b3901bd6372"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaafd66d6744314225ead24b3901bd6372">&#9670;&nbsp;</a></span>ATCACERT_E_INVALID_DATE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_INVALID_DATE&#160;&#160;&#160;5</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Date is invalid. </p>

</div>
</div>
<a id="ga2396e500bd36c2316a1a6e13e3117958"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2396e500bd36c2316a1a6e13e3117958">&#9670;&nbsp;</a></span>ATCACERT_E_INVALID_TRANSFORM</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_INVALID_TRANSFORM&#160;&#160;&#160;13</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Invalid transform passed to function. </p>

</div>
</div>
<a id="ga7bd1ad830360fc8b988f855da6d0d5ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7bd1ad830360fc8b988f855da6d0d5ba">&#9670;&nbsp;</a></span>ATCACERT_E_SUCCESS</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_SUCCESS&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Operation completed successfully. </p>

</div>
</div>
<a id="ga5a7cb98e18ad338f2eaf6594acb67c32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5a7cb98e18ad338f2eaf6594acb67c32">&#9670;&nbsp;</a></span>ATCACERT_E_UNEXPECTED_ELEM_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_UNEXPECTED_ELEM_SIZE&#160;&#160;&#160;7</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>A certificate element size was not what was expected. </p>

</div>
</div>
<a id="ga4b6db1523875a2b1453ef5e16989ecd4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4b6db1523875a2b1453ef5e16989ecd4">&#9670;&nbsp;</a></span>ATCACERT_E_UNIMPLEMENTED</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_UNIMPLEMENTED&#160;&#160;&#160;6</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Function is unimplemented for the current configuration. </p>

</div>
</div>
<a id="gae1da5e02cd9b4ee7b8617d7bce0a5b5d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae1da5e02cd9b4ee7b8617d7bce0a5b5d">&#9670;&nbsp;</a></span>ATCACERT_E_VERIFY_FAILED</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_VERIFY_FAILED&#160;&#160;&#160;12</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Certificate or challenge/response verification failed. </p>

</div>
</div>
<a id="ga01010ef58d52a05292f6a70ff3d53ce8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga01010ef58d52a05292f6a70ff3d53ce8">&#9670;&nbsp;</a></span>ATCACERT_E_WRONG_CERT_DEF</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ATCACERT_E_WRONG_CERT_DEF&#160;&#160;&#160;11</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga4cd9a96f5434fa3bc256878031d63846"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4cd9a96f5434fa3bc256878031d63846">&#9670;&nbsp;</a></span>DATEFMT_ISO8601_SEP_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DATEFMT_ISO8601_SEP_SIZE&#160;&#160;&#160;(20)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gae920fb7b153cf98e0d10365ec1d364de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae920fb7b153cf98e0d10365ec1d364de">&#9670;&nbsp;</a></span>DATEFMT_MAX_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DATEFMT_MAX_SIZE&#160;&#160;&#160;<a class="el" href="a00990.html#ga4cd9a96f5434fa3bc256878031d63846">DATEFMT_ISO8601_SEP_SIZE</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gafe13e835d79405f28daa3449f732ebcd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafe13e835d79405f28daa3449f732ebcd">&#9670;&nbsp;</a></span>DATEFMT_POSIX_UINT32_BE_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DATEFMT_POSIX_UINT32_BE_SIZE&#160;&#160;&#160;(4)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gaa7c545ab9944dc7261d689680e2b00f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa7c545ab9944dc7261d689680e2b00f4">&#9670;&nbsp;</a></span>DATEFMT_POSIX_UINT32_LE_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DATEFMT_POSIX_UINT32_LE_SIZE&#160;&#160;&#160;(4)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gae058e0e8944f408fa251bc4f4136d79c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae058e0e8944f408fa251bc4f4136d79c">&#9670;&nbsp;</a></span>DATEFMT_RFC5280_GEN_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DATEFMT_RFC5280_GEN_SIZE&#160;&#160;&#160;(15)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga420f3d438f3f8f7c140512910e54d09a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga420f3d438f3f8f7c140512910e54d09a">&#9670;&nbsp;</a></span>DATEFMT_RFC5280_UTC_SIZE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define DATEFMT_RFC5280_UTC_SIZE&#160;&#160;&#160;(13)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gaa93f0eb578d23995850d61f7d61c55c1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa93f0eb578d23995850d61f7d61c55c1">&#9670;&nbsp;</a></span>FALSE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define FALSE&#160;&#160;&#160;(0)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gaa8cecfc5c5c054d2875c03e77b7be15d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa8cecfc5c5c054d2875c03e77b7be15d">&#9670;&nbsp;</a></span>TRUE</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define TRUE&#160;&#160;&#160;(1)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="ga92ccf01a2c37be9caa7d840846672c83"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga92ccf01a2c37be9caa7d840846672c83">&#9670;&nbsp;</a></span>atcacert_build_state_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01065.html">atcacert_build_state_s</a>  <a class="el" href="a00990.html#ga92ccf01a2c37be9caa7d840846672c83">atcacert_build_state_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Tracks the state of a certificate as it's being rebuilt from device information. </p>

</div>
</div>
<a id="ga8d14206d455a7a7835ed613e57c20dd3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8d14206d455a7a7835ed613e57c20dd3">&#9670;&nbsp;</a></span>atcacert_cert_element_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01057.html">atcacert_cert_element_s</a>  <a class="el" href="a00990.html#ga8d14206d455a7a7835ed613e57c20dd3">atcacert_cert_element_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Defines a generic dynamic element for a certificate including the device and template locations. </p>

</div>
</div>
<a id="gae7c32139e6dce0fe25b4598299a77df6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae7c32139e6dce0fe25b4598299a77df6">&#9670;&nbsp;</a></span>atcacert_cert_loc_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01053.html">atcacert_cert_loc_s</a>  <a class="el" href="a00990.html#gae7c32139e6dce0fe25b4598299a77df6">atcacert_cert_loc_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Defines a chunk of data in a certificate template. </p>

</div>
</div>
<a id="gaa557358df9a164d6c1f14b1f53662c6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa557358df9a164d6c1f14b1f53662c6c">&#9670;&nbsp;</a></span>atcacert_cert_sn_src_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef enum <a class="el" href="a00990.html#ga813047a656af7fe578d28fd54c840e8e">atcacert_cert_sn_src_e</a>  <a class="el" href="a00990.html#gaa557358df9a164d6c1f14b1f53662c6c">atcacert_cert_sn_src_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sources for the certificate serial number. </p>

</div>
</div>
<a id="ga8fcfb1307197295422ace828b40ee37d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8fcfb1307197295422ace828b40ee37d">&#9670;&nbsp;</a></span>atcacert_cert_type_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef enum <a class="el" href="a00990.html#ga5430f01929cd7269e04db08d1f28642f">atcacert_cert_type_e</a>  <a class="el" href="a00990.html#ga8fcfb1307197295422ace828b40ee37d">atcacert_cert_type_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Types of certificates. </p>

</div>
</div>
<a id="ga7f389df0f74fd3593ab7e3a4d380433f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7f389df0f74fd3593ab7e3a4d380433f">&#9670;&nbsp;</a></span>atcacert_date_format_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef enum <a class="el" href="a00990.html#ga62a103735770a0f935a472fc2c1d78db">atcacert_date_format_e</a>  <a class="el" href="a00990.html#ga7f389df0f74fd3593ab7e3a4d380433f">atcacert_date_format_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Date formats. </p>

</div>
</div>
<a id="gae9e78b17340263e97844ccaf72ca16ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae9e78b17340263e97844ccaf72ca16ac">&#9670;&nbsp;</a></span>atcacert_def_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01061.html">atcacert_def_s</a>  <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Defines a certificate and all the pieces to work with it.</p>
<p>If any of the standard certificate elements (std_cert_elements) are not a part of the certificate definition, set their count to 0 to indicate their absence. </p>

</div>
</div>
<a id="ga0fb6e40d2f1496215af2f9ae23c861a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0fb6e40d2f1496215af2f9ae23c861a0">&#9670;&nbsp;</a></span>atcacert_device_loc_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01049.html">atcacert_device_loc_s</a>  <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Defines a chunk of data in an ATECC device. </p>

</div>
</div>
<a id="ga294899ca77a6801288e1ccb148de1f8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga294899ca77a6801288e1ccb148de1f8b">&#9670;&nbsp;</a></span>atcacert_device_zone_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef enum <a class="el" href="a00990.html#ga1c0876228cb459f64347a63f3bae4c73">atcacert_device_zone_e</a>  <a class="el" href="a00990.html#ga294899ca77a6801288e1ccb148de1f8b">atcacert_device_zone_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>ATECC device zones. The values match the Zone Encodings as specified in the datasheet. </p>

</div>
</div>
<a id="ga4889317187186736e62beb7538b870b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4889317187186736e62beb7538b870b2">&#9670;&nbsp;</a></span>atcacert_std_cert_element_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef enum <a class="el" href="a00990.html#ga77184d0c71198b489ea9b57d07da824e">atcacert_std_cert_element_e</a>  <a class="el" href="a00990.html#ga4889317187186736e62beb7538b870b2">atcacert_std_cert_element_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Standard dynamic certificate elements. </p>

</div>
</div>
<a id="ga81a3a91e9aa4aca39ca6fe8a7a94b121"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga81a3a91e9aa4aca39ca6fe8a7a94b121">&#9670;&nbsp;</a></span>atcacert_tm_utc_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct <a class="el" href="a01045.html">atcacert_tm_utc_s</a>  <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Holds a broken-down date in UTC. Mimics atcacert_tm_utc_t from time.h. </p>

</div>
</div>
<a id="ga9026eafcf2dca2c5a4427841e50ac17c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9026eafcf2dca2c5a4427841e50ac17c">&#9670;&nbsp;</a></span>atcacert_transform_t</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef enum <a class="el" href="a00990.html#ga121ffde3250c4ca6947c680868aa6017">atcacert_transform_e</a>  <a class="el" href="a00990.html#ga9026eafcf2dca2c5a4427841e50ac17c">atcacert_transform_t</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>How to transform the data from the device to the certificate. </p>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="ga813047a656af7fe578d28fd54c840e8e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga813047a656af7fe578d28fd54c840e8e">&#9670;&nbsp;</a></span>atcacert_cert_sn_src_e</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="a00990.html#ga813047a656af7fe578d28fd54c840e8e">atcacert_cert_sn_src_e</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sources for the certificate serial number. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga813047a656af7fe578d28fd54c840e8ea1b3e4833214ba25ba3d665135b2b6cd1"></a>SNSRC_STORED&#160;</td><td class="fielddoc"><p>Cert serial is stored on the device. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga813047a656af7fe578d28fd54c840e8ea4c213faf0171fcc6aeb27a1ca344342b"></a>SNSRC_STORED_DYNAMIC&#160;</td><td class="fielddoc"><p>Cert serial is stored on the device with the first byte being the DER size (X509 certs only). </p>
</td></tr>
<tr><td class="fieldname"><a id="gga813047a656af7fe578d28fd54c840e8ea338258d51f0eb1c5d7ef9f0e639f5e41"></a>SNSRC_DEVICE_SN&#160;</td><td class="fielddoc"><p>Cert serial number is 0x40(MSB) + 9-byte device serial number. Only applies to device certificates. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga813047a656af7fe578d28fd54c840e8eabda5814e7da6c10dc243749dea79ffff"></a>SNSRC_SIGNER_ID&#160;</td><td class="fielddoc"><p>Cert serial number is 0x40(MSB) + 2-byte signer ID. Only applies to signer certificates. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga813047a656af7fe578d28fd54c840e8ea5dadea2da6020b492727eb1da6c4bb1e"></a>SNSRC_PUB_KEY_HASH&#160;</td><td class="fielddoc"><p>Cert serial number is the SHA256(Subject public key + Encoded dates), with uppermost 2 bits set to 01. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga813047a656af7fe578d28fd54c840e8eaffba4ece10bc933c6b408a2b4e234ab2"></a>SNSRC_DEVICE_SN_HASH&#160;</td><td class="fielddoc"><p>Cert serial number is the SHA256(Device SN + Encoded dates), with uppermost 2 bits set to 01. Only applies to device certificates. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga813047a656af7fe578d28fd54c840e8eacaf00502661bc7b9c260ca68831928b5"></a>SNSRC_PUB_KEY_HASH_POS&#160;</td><td class="fielddoc"><p>Depreciated, don't use. Cert serial number is the SHA256(Subject public key + Encoded dates), with MSBit set to 0 to ensure it's positive. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga813047a656af7fe578d28fd54c840e8eab87e9124d93ca45243eacac5b96452b7"></a>SNSRC_DEVICE_SN_HASH_POS&#160;</td><td class="fielddoc"><p>Depreciated, don't use. Cert serial number is the SHA256(Device SN + Encoded dates), with MSBit set to 0 to ensure it's positive. Only applies to device certificates. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga813047a656af7fe578d28fd54c840e8ea83bf725c47007c842da4a8e93b1bf972"></a>SNSRC_PUB_KEY_HASH_RAW&#160;</td><td class="fielddoc"><p>Depreciated, don't use. Cert serial number is the SHA256(Subject public key + Encoded dates). </p>
</td></tr>
<tr><td class="fieldname"><a id="gga813047a656af7fe578d28fd54c840e8ea2d608b2eeb6da309c1e9b2af7060d909"></a>SNSRC_DEVICE_SN_HASH_RAW&#160;</td><td class="fielddoc"><p>Depreciated, don't use. Cert serial number is the SHA256(Device SN + Encoded dates). Only applies to device certificates. </p>
</td></tr>
</table>

</div>
</div>
<a id="ga5430f01929cd7269e04db08d1f28642f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5430f01929cd7269e04db08d1f28642f">&#9670;&nbsp;</a></span>atcacert_cert_type_e</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="a00990.html#ga5430f01929cd7269e04db08d1f28642f">atcacert_cert_type_e</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Types of certificates. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga5430f01929cd7269e04db08d1f28642fa82bc16ac5283813ee3ffe7cddf8e2b44"></a>CERTTYPE_X509&#160;</td><td class="fielddoc"><p>Standard X509 certificate. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga5430f01929cd7269e04db08d1f28642fa92c401741edaf606af7056851db7dddb"></a>CERTTYPE_CUSTOM&#160;</td><td class="fielddoc"><p>Custom format. </p>
</td></tr>
</table>

</div>
</div>
<a id="ga62a103735770a0f935a472fc2c1d78db"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga62a103735770a0f935a472fc2c1d78db">&#9670;&nbsp;</a></span>atcacert_date_format_e</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="a00990.html#ga62a103735770a0f935a472fc2c1d78db">atcacert_date_format_e</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Date formats. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga62a103735770a0f935a472fc2c1d78dba593aa8634c6a3d493cb7bebe4a40a8b5"></a>DATEFMT_ISO8601_SEP&#160;</td><td class="fielddoc"><p>ISO8601 full date YYYY-MM-DDThh:mm:ssZ. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga62a103735770a0f935a472fc2c1d78dbad080b870f84643db2fdc7934560c322d"></a>DATEFMT_RFC5280_UTC&#160;</td><td class="fielddoc"><p>RFC 5280 (X.509) 4.1.2.5.1 UTCTime format YYMMDDhhmmssZ. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga62a103735770a0f935a472fc2c1d78dbacfca1392e4cde6f2d467f9f69641890a"></a>DATEFMT_POSIX_UINT32_BE&#160;</td><td class="fielddoc"><p>POSIX (aka UNIX) date format. Seconds since Jan 1, 1970. 32 bit unsigned integer, big endian. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga62a103735770a0f935a472fc2c1d78dba24c30a16c9f26257dcd0464b7aa69161"></a>DATEFMT_POSIX_UINT32_LE&#160;</td><td class="fielddoc"><p>POSIX (aka UNIX) date format. Seconds since Jan 1, 1970. 32 bit unsigned integer, little endian. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga62a103735770a0f935a472fc2c1d78dbac95f38ee25fdaad80fb77dcf9d71a93e"></a>DATEFMT_RFC5280_GEN&#160;</td><td class="fielddoc"><p>RFC 5280 (X.509) 4.1.2.5.2 GeneralizedTime format YYYYMMDDhhmmssZ. </p>
</td></tr>
</table>

</div>
</div>
<a id="ga1c0876228cb459f64347a63f3bae4c73"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1c0876228cb459f64347a63f3bae4c73">&#9670;&nbsp;</a></span>atcacert_device_zone_e</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="a00990.html#ga1c0876228cb459f64347a63f3bae4c73">atcacert_device_zone_e</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>ATECC device zones. The values match the Zone Encodings as specified in the datasheet. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga1c0876228cb459f64347a63f3bae4c73a4856bc2fcbda0be68832968204126207"></a>DEVZONE_CONFIG&#160;</td><td class="fielddoc"><p>Configuration zone. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga1c0876228cb459f64347a63f3bae4c73ae42ffc066a13ac1f38195d2cf4e60cea"></a>DEVZONE_OTP&#160;</td><td class="fielddoc"><p>One Time Programmable zone. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga1c0876228cb459f64347a63f3bae4c73a774ecb8e950d309498a9aa64933d95cb"></a>DEVZONE_DATA&#160;</td><td class="fielddoc"><p>Data zone (slots). </p>
</td></tr>
<tr><td class="fieldname"><a id="gga1c0876228cb459f64347a63f3bae4c73afe6b6aedf2a765638f3c62817db11f05"></a>DEVZONE_NONE&#160;</td><td class="fielddoc"><p>Special value used to indicate there is no device location. </p>
</td></tr>
</table>

</div>
</div>
<a id="ga77184d0c71198b489ea9b57d07da824e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga77184d0c71198b489ea9b57d07da824e">&#9670;&nbsp;</a></span>atcacert_std_cert_element_e</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="a00990.html#ga77184d0c71198b489ea9b57d07da824e">atcacert_std_cert_element_e</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Standard dynamic certificate elements. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga77184d0c71198b489ea9b57d07da824eaf78a51bddeca05e1a525f26792b6de68"></a>STDCERT_PUBLIC_KEY&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="gga77184d0c71198b489ea9b57d07da824ea8eab5679d330212bb87b2413ea82b7cc"></a>STDCERT_SIGNATURE&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="gga77184d0c71198b489ea9b57d07da824ea2f3039692a71546e581fcaf8a8a53f15"></a>STDCERT_ISSUE_DATE&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="gga77184d0c71198b489ea9b57d07da824ea886b91f34d6839fe9e9217490530c604"></a>STDCERT_EXPIRE_DATE&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="gga77184d0c71198b489ea9b57d07da824eadfaaad6a933423f63fc3233bd84b90d3"></a>STDCERT_SIGNER_ID&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="gga77184d0c71198b489ea9b57d07da824ea73b3d53d4e70a48fd3fdeb0143493efc"></a>STDCERT_CERT_SN&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="gga77184d0c71198b489ea9b57d07da824ea6a9cddad9f6b552f0fe5f63fc57cf106"></a>STDCERT_AUTH_KEY_ID&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="gga77184d0c71198b489ea9b57d07da824ea97400647cc539ce999c0b9f95d736585"></a>STDCERT_SUBJ_KEY_ID&#160;</td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="gga77184d0c71198b489ea9b57d07da824ead9a44768825ebcc67750d8e4172dc60f"></a>STDCERT_NUM_ELEMENTS&#160;</td><td class="fielddoc"><p>Special item to give the number of elements in this enum. </p>
</td></tr>
</table>

</div>
</div>
<a id="ga121ffde3250c4ca6947c680868aa6017"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga121ffde3250c4ca6947c680868aa6017">&#9670;&nbsp;</a></span>atcacert_transform_e</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="a00990.html#ga121ffde3250c4ca6947c680868aa6017">atcacert_transform_e</a></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>How to transform the data from the device to the certificate. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga121ffde3250c4ca6947c680868aa6017ac87f695cb78c44a56c6306e226c87d84"></a>TF_NONE&#160;</td><td class="fielddoc"><p>No transform, data is used byte for byte. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga121ffde3250c4ca6947c680868aa6017acfa23727589758659b759cc4c1b8e817"></a>TF_REVERSE&#160;</td><td class="fielddoc"><p>Reverse the bytes (e.g. change endianness) </p>
</td></tr>
<tr><td class="fieldname"><a id="gga121ffde3250c4ca6947c680868aa6017a25e35bbc33f0152a8bc24e07f1a71bf7"></a>TF_BIN2HEX_UC&#160;</td><td class="fielddoc"><p>Convert raw binary into ASCII hex, uppercase. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga121ffde3250c4ca6947c680868aa6017a2682cdac7651ff7c68303c6b240b4979"></a>TF_BIN2HEX_LC&#160;</td><td class="fielddoc"><p>Convert raw binary into ASCII hex, lowercase. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga121ffde3250c4ca6947c680868aa6017aacc5e6c227eb55801343878d1dd6b779"></a>TF_HEX2BIN_UC&#160;</td><td class="fielddoc"><p>Convert ASCII hex, uppercase to binary. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga121ffde3250c4ca6947c680868aa6017a55a7f98db8c5480ffb0d2456a91689fd"></a>TF_HEX2BIN_LC&#160;</td><td class="fielddoc"><p>Convert ASCII hex, lowercase to binary. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga121ffde3250c4ca6947c680868aa6017a651f9d504c16191f36cf1b1762d8c0aa"></a>TF_BIN2HEX_SPACE_UC&#160;</td><td class="fielddoc"><p>Convert raw binary into ASCII hex, uppercase space between bytes. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga121ffde3250c4ca6947c680868aa6017a0cc6a8630e1d28499201e23f355a89fe"></a>TF_BIN2HEX_SPACE_LC&#160;</td><td class="fielddoc"><p>Convert raw binary into ASCII hex, lowercase space between bytes. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga121ffde3250c4ca6947c680868aa6017a62b34cc88494773ef3035a91deaafd08"></a>TF_HEX2BIN_SPACE_UC&#160;</td><td class="fielddoc"><p>Convert ASCII hex, uppercase with spaces between bytes to binary. </p>
</td></tr>
<tr><td class="fieldname"><a id="gga121ffde3250c4ca6947c680868aa6017af1a0d28ef10a4e4f74d6bfbfc371300d"></a>TF_HEX2BIN_SPACE_LC&#160;</td><td class="fielddoc"><p>Convert ASCII hex, lowercase with spaces between bytes to binary. </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga9e594a491dccf61a638be46da5d40ff9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9e594a491dccf61a638be46da5d40ff9">&#9670;&nbsp;</a></span>atcacert_cert_build_finish()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_cert_build_finish </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00990.html#ga92ccf01a2c37be9caa7d840846672c83">atcacert_build_state_t</a> *&#160;</td>
          <td class="paramname"><em>build_state</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Completes any final certificate processing required after all data from the device has been incorporated. </p>
<p>The final certificate and its size in bytes are contained in the cert and cert_size elements of the build_state structure. This will be the same buffers as supplied to the atcacert_cert_build_start function at the beginning of the certificate rebuilding process.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">build_state</td><td>Current certificate build state.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga626158cfe54b84903885b2cc6c3880e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga626158cfe54b84903885b2cc6c3880e4">&#9670;&nbsp;</a></span>atcacert_cert_build_process()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_cert_build_process </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00990.html#ga92ccf01a2c37be9caa7d840846672c83">atcacert_build_state_t</a> *&#160;</td>
          <td class="paramname"><em>build_state</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *&#160;</td>
          <td class="paramname"><em>device_loc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>device_data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Process information read from the ATECC device. If it contains information for the certificate, it will be incorporated into the certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">build_state</td><td>Current certificate building state. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">device_loc</td><td>Device location structure describing where on the device the following data came from. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">device_data</td><td>Actual data from the device. It should represent the offset and byte count specified in the device_loc parameter.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gace8ac017f58840c296fe2cf29bdaa2fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gace8ac017f58840c296fe2cf29bdaa2fe">&#9670;&nbsp;</a></span>atcacert_cert_build_start()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_cert_build_start </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00990.html#ga92ccf01a2c37be9caa7d840846672c83">atcacert_build_state_t</a> *&#160;</td>
          <td class="paramname"><em>build_state</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>ca_public_key</em>[64]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Starts the certificate rebuilding process. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">build_state</td><td>Structure is initialized to start the certificate building process. Will be passed to the other certificate building functions. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate being built. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Buffer to contain the rebuilt certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>As input, the size of the cert buffer in bytes. This value will be adjusted to the current/final size of the certificate through the building process. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ca_public_key</td><td>ECC P256 public key of the certificate authority (issuer) for the certificate being built. Set to NULL if the authority key id is not needed, set properly in the cert_def template, or stored on the device as specified in the cert_def cert_elements.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gabd66cb9a5c50c7c62e3bc0a8ff0fc4d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabd66cb9a5c50c7c62e3bc0a8ff0fc4d6">&#9670;&nbsp;</a></span>atcacert_create_csr()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_create_csr </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>csr_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>csr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>csr_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Creates a CSR specified by the CSR definition from the ATECC508A device. This process involves reading the dynamic CSR data from the device and combining it with the template found in the CSR definition, then signing it. Return the CSR int der format. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">csr_def</td><td>CSR definition describing where to find the dynamic CSR information on the device and how to incorporate it into the template. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">csr</td><td>Buffer to receive the CSR. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">csr_size</td><td>As input, the size of the CSR buffer in bytes. As output, the size of the CSR returned in cert in bytes. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga0b492025e27a705b1792b6276eeaaf68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0b492025e27a705b1792b6276eeaaf68">&#9670;&nbsp;</a></span>atcacert_create_csr_pem()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_create_csr_pem </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>csr_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>csr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>csr_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Creates a CSR specified by the CSR definition from the ATECC508A device. This process involves reading the dynamic CSR data from the device and combining it with the template found in the CSR definition, then signing it. Return the CSR int der format. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">csr_def</td><td>CSR definition describing where to find the dynamic CSR information on the device and how to incorporate it into the template. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">csr</td><td>Buffer to received the CSR formatted as PEM. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">csr_size</td><td>As input, the size of the CSR buffer in bytes. As output, the size of the CSR as PEM returned in cert in bytes. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga368d038c02673b1e6ddacfd175786e6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga368d038c02673b1e6ddacfd175786e6a">&#9670;&nbsp;</a></span>atcacert_date_dec()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_dec </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00990.html#ga7f389df0f74fd3593ab7e3a4d380433f">atcacert_date_format_t</a>&#160;</td>
          <td class="paramname"><em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>formatted_date</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>formatted_date_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Parse a formatted timestamp according to the specified format. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>Format to parse the formatted date as. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">formatted_date</td><td>Formatted date to be parsed. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">formatted_date_size</td><td>Size of the formatted date in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">timestamp</td><td>Parsed timestamp is returned here.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gaba31331bcfab203c786004b027512fab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaba31331bcfab203c786004b027512fab">&#9670;&nbsp;</a></span>atcacert_date_dec_compcert()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_dec_compcert </td>
          <td>(</td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>enc_dates</em>[3], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00990.html#ga7f389df0f74fd3593ab7e3a4d380433f">atcacert_date_format_t</a>&#160;</td>
          <td class="paramname"><em>expire_date_format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>issue_date</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>expire_date</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Decode the issue and expire dates from the format used by the compressed certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">enc_dates</td><td>Encoded date from the compressed certificate. 3 bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">expire_date_format</td><td>Expire date format. Only used to determine max date when no expiration date is specified by the encoded date. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">issue_date</td><td>Decoded issue date is returned here. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">expire_date</td><td>Decoded expire date is returned here. If there is no expiration date, the expire date will be set to a maximum value for the given expire_date_format.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success </dd></dl>

</div>
</div>
<a id="ga3ff21be0f011ce56dfde5e2ac99e17ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3ff21be0f011ce56dfde5e2ac99e17ce">&#9670;&nbsp;</a></span>atcacert_date_dec_iso8601_sep()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_dec_iso8601_sep </td>
          <td>(</td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>formatted_date</em>[DATEFMT_ISO8601_SEP_SIZE], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga37893ca05c0e3ccbcec3725228b8a818"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga37893ca05c0e3ccbcec3725228b8a818">&#9670;&nbsp;</a></span>atcacert_date_dec_posix_uint32_be()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_dec_posix_uint32_be </td>
          <td>(</td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>formatted_date</em>[DATEFMT_POSIX_UINT32_BE_SIZE], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gab5bbaaf84f1c19409ee276241e9e2f6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab5bbaaf84f1c19409ee276241e9e2f6d">&#9670;&nbsp;</a></span>atcacert_date_dec_posix_uint32_le()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_dec_posix_uint32_le </td>
          <td>(</td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>formatted_date</em>[DATEFMT_POSIX_UINT32_LE_SIZE], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gadd219151c074c3ec7785d68741a1cae1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadd219151c074c3ec7785d68741a1cae1">&#9670;&nbsp;</a></span>atcacert_date_dec_rfc5280_gen()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_dec_rfc5280_gen </td>
          <td>(</td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>formatted_date</em>[DATEFMT_RFC5280_GEN_SIZE], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga7fa37d88f9405a3557110e58468f9e6e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7fa37d88f9405a3557110e58468f9e6e">&#9670;&nbsp;</a></span>atcacert_date_dec_rfc5280_utc()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_dec_rfc5280_utc </td>
          <td>(</td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>formatted_date</em>[DATEFMT_RFC5280_UTC_SIZE], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gaab946b2ea5dba6d1addacc995a6989ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaab946b2ea5dba6d1addacc995a6989ae">&#9670;&nbsp;</a></span>atcacert_date_enc()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_enc </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00990.html#ga7f389df0f74fd3593ab7e3a4d380433f">atcacert_date_format_t</a>&#160;</td>
          <td class="paramname"><em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>formatted_date</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>formatted_date_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Format a timestamp according to the format type. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>Format to use. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">timestamp</td><td>Timestamp to format. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">formatted_date</td><td>Formatted date will be returned in this buffer. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">formatted_date_size</td><td>As input, the size of the formatted_date buffer. As output, the size of the returned formatted_date.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga5da5a0589a6168aafd34b4aac4e07553"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5da5a0589a6168aafd34b4aac4e07553">&#9670;&nbsp;</a></span>atcacert_date_enc_compcert()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_enc_compcert </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>issue_date</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>expire_years</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>enc_dates</em>[3]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Encode the issue and expire dates in the format used by the compressed certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">issue_date</td><td>Issue date to encode. Note that minutes and seconds will be ignored. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">expire_years</td><td>Expire date is expressed as a number of years past the issue date. 0 should be used if there is no expire date. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">enc_dates</td><td>Encoded dates for use in the compressed certificate is returned here. 3 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success </dd></dl>

</div>
</div>
<a id="gae40aeb71d824e8bbe3233e86f3fb6a3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae40aeb71d824e8bbe3233e86f3fb6a3f">&#9670;&nbsp;</a></span>atcacert_date_enc_iso8601_sep()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_enc_iso8601_sep </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>formatted_date</em>[DATEFMT_ISO8601_SEP_SIZE]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga1160e4293d7831e15a47e7b3f47013ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1160e4293d7831e15a47e7b3f47013ca">&#9670;&nbsp;</a></span>atcacert_date_enc_posix_uint32_be()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_enc_posix_uint32_be </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>formatted_date</em>[DATEFMT_POSIX_UINT32_BE_SIZE]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga4825cb7a817fa9471cfe30a1aa984b8f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4825cb7a817fa9471cfe30a1aa984b8f">&#9670;&nbsp;</a></span>atcacert_date_enc_posix_uint32_le()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_enc_posix_uint32_le </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>formatted_date</em>[DATEFMT_POSIX_UINT32_LE_SIZE]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gaaeb955dfc5b73719e2ecca542c2fc249"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaaeb955dfc5b73719e2ecca542c2fc249">&#9670;&nbsp;</a></span>atcacert_date_enc_rfc5280_gen()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_enc_rfc5280_gen </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>formatted_date</em>[DATEFMT_RFC5280_GEN_SIZE]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gaa83e2f3a3f83b321dade6cd3211136db"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa83e2f3a3f83b321dade6cd3211136db">&#9670;&nbsp;</a></span>atcacert_date_enc_rfc5280_utc()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_enc_rfc5280_utc </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>formatted_date</em>[DATEFMT_RFC5280_UTC_SIZE]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ga1d267b06c94e1db2aa2f6e91df1c843f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1d267b06c94e1db2aa2f6e91df1c843f">&#9670;&nbsp;</a></span>atcacert_date_get_max_date()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_date_get_max_date </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00990.html#ga7f389df0f74fd3593ab7e3a4d380433f">atcacert_date_format_t</a>&#160;</td>
          <td class="paramname"><em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the maximum date available for the given format. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">format</td><td>Format to get the max date for. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">timestamp</td><td>Max date is returned here.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga165018175f52421ea26fb33ccf335108"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga165018175f52421ea26fb33ccf335108">&#9670;&nbsp;</a></span>atcacert_der_adjust_length()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_der_adjust_length </td>
          <td>(</td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>der_length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>der_length_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>delta_length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t *&#160;</td>
          <td class="paramname"><em>new_length</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="gac3f22b75f15e8508f35d99b95d955842"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac3f22b75f15e8508f35d99b95d955842">&#9670;&nbsp;</a></span>atcacert_der_dec_ecdsa_sig_value()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_der_dec_ecdsa_sig_value </td>
          <td>(</td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>der_sig</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>der_sig_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>raw_sig</em>[64]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Parses an ECDSA P256 signature in the DER encoding as found in X.509 certificates. </p>
<p>This will parse the DER encoding of the signatureValue field as found in an X.509 certificate (RFC 5280). x509_sig should include the tag, length, and value. The value of the signatureValue is the DER encoding of the ECDSA-Sig-Value as specified by RFC 5480 and SECG SEC1.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">der_sig</td><td>X.509 format signature (TLV of signatureValue) to be parsed. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">der_sig_size</td><td>As input, size of the der_sig buffer in bytes. As output, size of the DER x.509 signature parsed from the buffer. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">raw_sig</td><td>Parsed P256 ECDSA signature will be returned in this buffer. Formatted as R and S integers concatenated together. 64 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga3b095e11adc55a61e3cfb2957d0c6c77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3b095e11adc55a61e3cfb2957d0c6c77">&#9670;&nbsp;</a></span>atcacert_der_dec_integer()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_der_dec_integer </td>
          <td>(</td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>der_int</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>der_int_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>int_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>int_data_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Decode an ASN.1 DER encoded integer. </p>
<p>X.680 (<a href="http://www.itu.int/rec/T-REC-X.680/en">http://www.itu.int/rec/T-REC-X.680/en</a>) section 19.8, for tag value X.690 (<a href="http://www.itu.int/rec/T-REC-X.690/en">http://www.itu.int/rec/T-REC-X.690/en</a>) section 8.3, for encoding</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">der_int</td><td>DER encoded ASN.1 integer, including the tag and length fields. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">der_int_size</td><td>As input, the size of the der_int buffer in bytes. As output, the size of the DER integer decoded in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">int_data</td><td>Decode integer is returned in this buffer in a signed big-endian format. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">int_data_size</td><td>As input, the size of int_data in bytes. As output, the size of the decoded integer in bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gaeee4091e249b8fc202d5126a8374eeb1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaeee4091e249b8fc202d5126a8374eeb1">&#9670;&nbsp;</a></span>atcacert_der_dec_length()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_der_dec_length </td>
          <td>(</td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>der_length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>der_length_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t *&#160;</td>
          <td class="paramname"><em>length</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Decode a DER format length. </p>
<p>X.690 (<a href="http://www.itu.int/rec/T-REC-X.690/en">http://www.itu.int/rec/T-REC-X.690/en</a>) section 8.1.3, for encoding</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">der_length</td><td>DER encoded length. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">der_length_size</td><td>As input, the size of the der_length buffer in bytes. As output, the size of the DER encoded length that was decoded. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">length</td><td>Decoded length is returned here.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga3583ada6da51d31cfe819894e8a9deeb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3583ada6da51d31cfe819894e8a9deeb">&#9670;&nbsp;</a></span>atcacert_der_enc_ecdsa_sig_value()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_der_enc_ecdsa_sig_value </td>
          <td>(</td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>raw_sig</em>[64], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>der_sig</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>der_sig_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Formats a raw ECDSA P256 signature in the DER encoding found in X.509 certificates. </p>
<p>This will return the DER encoding of the signatureValue field as found in an X.509 certificate (RFC 5280). This include the tag, length, and value. The value of the signatureValue is the DER encoding of the ECDSA-Sig-Value as specified by RFC 5480 and SECG SEC1.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">raw_sig</td><td>P256 ECDSA signature to be formatted. Input format is R and S integers concatenated together. 64 bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">der_sig</td><td>X.509 format signature (TLV of signatureValue) will be returned in this buffer. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">der_sig_size</td><td>As input, the size of the x509_sig buffer in bytes. As output, the size of the returned X.509 signature in bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gaf156257cda87df879f54c07e80bc0e8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf156257cda87df879f54c07e80bc0e8d">&#9670;&nbsp;</a></span>atcacert_der_enc_integer()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_der_enc_integer </td>
          <td>(</td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>int_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>int_data_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>is_unsigned</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>der_int</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>der_int_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Encode an ASN.1 integer in DER format, including tag and length fields. </p>
<p>X.680 (<a href="http://www.itu.int/rec/T-REC-X.680/en">http://www.itu.int/rec/T-REC-X.680/en</a>) section 19.8, for tag value X.690 (<a href="http://www.itu.int/rec/T-REC-X.690/en">http://www.itu.int/rec/T-REC-X.690/en</a>) section 8.3, for encoding</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">int_data</td><td>Raw integer in big-endian format. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">int_data_size</td><td>Size of the raw integer in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">is_unsigned</td><td>Indicate whether the input integer should be treated as unsigned. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">der_int</td><td>DER encoded integer is returned in this buffer. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">der_int_size</td><td>As input, the size of the der_int buffer in bytes. As output, the size of the DER integer returned in bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gaafc9ef8e0164226481b670fde0223e13"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaafc9ef8e0164226481b670fde0223e13">&#9670;&nbsp;</a></span>atcacert_der_enc_length()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_der_enc_length </td>
          <td>(</td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>der_length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>der_length_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Encode a length in DER format. </p>
<p>X.690 (<a href="http://www.itu.int/rec/T-REC-X.690/en">http://www.itu.int/rec/T-REC-X.690/en</a>) section 8.1.3, for encoding</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>Length to be encoded. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">der_length</td><td>DER encoded length will returned in this buffer. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">der_length_size</td><td>As input, size of der_length buffer in bytes. As output, the size of the DER length encoding in bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gae1f109cb8edea615c0f7126527208452"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae1f109cb8edea615c0f7126527208452">&#9670;&nbsp;</a></span>atcacert_gen_cert_sn()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_gen_cert_sn </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>device_sn</em>[9]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the certificate serial number by generating it from other information in the certificate using the scheme specified by sn_source in cert_def. See the. </p>
<p>This method requires certain elements in the certificate be set properly as they're used for generating the serial number. See atcacert_cert_sn_src_t for what elements should be set in the certificate beforehand. If the sn_source is set to SNSRC_STORED or SNSRC_STORED_DYNAMIC, the function will return ATCACERT_E_SUCCESS without making any changes to the certificate.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert</td><td>Certificate to update. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">device_sn</td><td>Device serial number, only used if required by the sn_source scheme. Can be set to NULL, if not required.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga208c1ea765f192bd86b26964fbb5edcb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga208c1ea765f192bd86b26964fbb5edcb">&#9670;&nbsp;</a></span>atcacert_gen_challenge_hw()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_gen_challenge_hw </td>
          <td>(</td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>challenge</em>[32]</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Generate a random challenge to be sent to the client using the RNG on the host's ATECC device. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">challenge</td><td>Random challenge is return here. 32 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gaa9829e5aa1ece3d3a933db9827d3e8f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa9829e5aa1ece3d3a933db9827d3e8f3">&#9670;&nbsp;</a></span>atcacert_gen_challenge_sw()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_gen_challenge_sw </td>
          <td>(</td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>challenge</em>[32]</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Generate a random challenge to be sent to the client using a software PRNG.The function is currently not implemented. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">challenge</td><td>Random challenge is return here. 32 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_UNIMPLEMENTED , as the function is currently not implemented. </dd></dl>

</div>
</div>
<a id="gadf6c26dd4333931acf2b8f6ac9a5f422"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadf6c26dd4333931acf2b8f6ac9a5f422">&#9670;&nbsp;</a></span>atcacert_get_auth_key_id()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_auth_key_id </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>auth_key_id</em>[20]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the authority key ID from a certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to get element from. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">auth_key_id</td><td>Authority key ID is returned in this buffer. 20 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gacdb102fcae9f3a822a19b2ca487b415d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacdb102fcae9f3a822a19b2ca487b415d">&#9670;&nbsp;</a></span>atcacert_get_cert_element()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_cert_element </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae7c32139e6dce0fe25b4598299a77df6">atcacert_cert_loc_t</a> *&#160;</td>
          <td class="paramname"><em>cert_loc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>data_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets an element from a certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_loc</td><td>Certificate location for this element. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to get element from. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>Element data will be returned in this buffer. This buffer must be large enough to hold cert_loc.count bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data_size</td><td>Expected size of the cert element data.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gaf64c228c28f42f15e9b43457146d1504"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf64c228c28f42f15e9b43457146d1504">&#9670;&nbsp;</a></span>atcacert_get_cert_sn()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_cert_sn </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert_sn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>cert_sn_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the certificate serial number from a certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to get element from. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">cert_sn</td><td>Certificate SN will be returned in this buffer. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert_sn_size</td><td>As input, the size of the cert_sn buffer. As output, the size of the certificate SN (cert_sn) in bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga9a7903692035d06b5d1a45c3b56fce3a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9a7903692035d06b5d1a45c3b56fce3a">&#9670;&nbsp;</a></span>atcacert_get_comp_cert()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_comp_cert </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>comp_cert</em>[72]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Generate the compressed certificate for the given certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to generate the compressed certificate for. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">comp_cert</td><td>Compressed certificate is returned in this buffer. 72 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga240f94a03feb298e5c618677f2962a5a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga240f94a03feb298e5c618677f2962a5a">&#9670;&nbsp;</a></span>atcacert_get_device_data()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_device_data </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *&#160;</td>
          <td class="paramname"><em>device_loc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>device_data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the dynamic data that would be saved to the specified device location. This function is primarily used to break down a full certificate into the dynamic components to be saved to a device. </p>
<p>The atcacert_add_device_locs function can be used to generate a list of device locations a particular certificate definition requires.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate we're getting data from. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to get the device data from. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">device_loc</td><td>Device location to request data for. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">device_data</td><td>Buffer that represents the device data in device_loc. Required to be at least device_loc.count in size.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga84f1aeed7b88889d5bf01f21dbaaf398"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga84f1aeed7b88889d5bf01f21dbaaf398">&#9670;&nbsp;</a></span>atcacert_get_device_locs()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_device_locs </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *&#160;</td>
          <td class="paramname"><em>device_locs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>device_locs_count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>device_locs_max_count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>block_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add all the device locations required to rebuild the specified certificate (cert_def) to a device locations list. </p>
<p>The block_size parameter will adjust all added device locations to have a offset and count that aligns with that block size. This allows one to generate a list of device locations that matches specific read or write semantics (e.g. 4 byte or 32 byte reads).</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition containing all the device locations to add to the list. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">device_locs</td><td>List of device locations to add to. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">device_locs_count</td><td>As input, existing size of the device locations list. As output, the new size of the device locations list. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">device_locs_max_count</td><td>Maximum number of elements device_locs can hold. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">block_size</td><td>Block size to align all offsets and counts to when adding device locations.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga8d1d761d35cf36feea5c626bb1d70ab2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8d1d761d35cf36feea5c626bb1d70ab2">&#9670;&nbsp;</a></span>atcacert_get_expire_date()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_expire_date </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the expire date from a certificate. Will be parsed according to the date format specified in the certificate definition. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to get element from. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">timestamp</td><td>Expire date is returned in this structure.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga51f7b996909bc9cae783bcaf0fe7082b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga51f7b996909bc9cae783bcaf0fe7082b">&#9670;&nbsp;</a></span>atcacert_get_issue_date()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_issue_date </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the issue date from a certificate. Will be parsed according to the date format specified in the certificate definition. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to get element from. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">timestamp</td><td>Issue date is returned in this structure.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gad93de2bdacdcfe04abb0e991a8401388"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad93de2bdacdcfe04abb0e991a8401388">&#9670;&nbsp;</a></span>atcacert_get_key_id()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_key_id </td>
          <td>(</td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>public_key</em>[64], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>key_id</em>[20]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Calculates the key ID for a given public ECC P256 key. </p>
<p>Uses method 1 for calculating the keyIdentifier as specified by RFC 5280, section 4.2.1.2: (1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the value of the BIT STRING subjectPublicKey (excluding the tag, length, and number of unused bits).</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">public_key</td><td>ECC P256 public key to calculate key key ID for. Formatted as the X and Y integers concatenated together. 64 bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">key_id</td><td>Calculated key ID will be returned in this buffer. 20 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga9f7223a578ce5c07a831638106c6ff6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9f7223a578ce5c07a831638106c6ff6c">&#9670;&nbsp;</a></span>atcacert_get_response()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_response </td>
          <td>(</td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>device_private_key_slot</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>challenge</em>[32], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>response</em>[64]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Calculates the response to a challenge sent from the host. </p>
<p>The challenge-response protocol is an ECDSA Sign and Verify. This performs the ECDSA Sign on the challenge and returns the signature as the response.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">device_private_key_slot</td><td>Slot number for the device's private key. This must be the same slot used to generate the public key included in the device's certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">challenge</td><td>Challenge to generate the response for. Must be 32 bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">response</td><td>Response will be returned in this buffer. 64 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gaf55b75df5e523e2d275ebb8cbe36fec6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf55b75df5e523e2d275ebb8cbe36fec6">&#9670;&nbsp;</a></span>atcacert_get_signature()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_signature </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>signature</em>[64]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the signature from a certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to get element from. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">signature</td><td>Signature is returned in this buffer. Formatted at R and S integers concatenated together. 64 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga1201f3c1a20b5b105f9160bea104b102"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1201f3c1a20b5b105f9160bea104b102">&#9670;&nbsp;</a></span>atcacert_get_signer_id()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_signer_id </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>signer_id</em>[2]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the signer ID from a certificate. Will be parsed as 4 upper-case hex digits. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to get element from. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">signer_id</td><td>Signer ID will be returned in this buffer. 2 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga2843ebd40b7f0b6b4bf22cd447fa90e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2843ebd40b7f0b6b4bf22cd447fa90e0">&#9670;&nbsp;</a></span>atcacert_get_subj_key_id()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_subj_key_id </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>subj_key_id</em>[20]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the subject key ID from a certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to get element from. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">subj_key_id</td><td>Subject key ID is returned in this buffer. 20 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gab4fac3fd2bf5a227140cc3012a4dad02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab4fac3fd2bf5a227140cc3012a4dad02">&#9670;&nbsp;</a></span>atcacert_get_subj_public_key()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_subj_public_key </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>subj_public_key</em>[64]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Gets the subject public key from a certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to get element from. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">subj_public_key</td><td>Subject public key is returned in this buffer. Formatted at X and Y integers concatenated together. 64 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga9883eaf43aa94e7a29c1bdf13514185c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9883eaf43aa94e7a29c1bdf13514185c">&#9670;&nbsp;</a></span>atcacert_get_tbs()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_tbs </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t **&#160;</td>
          <td class="paramname"><em>tbs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>tbs_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get a pointer to the TBS data in a certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to get the TBS data pointer for. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">tbs</td><td>Pointer to a const pointer that will be set the start of the TBS data. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">tbs_size</td><td>Size of the TBS data will be returned here.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga0b2fd4ca54a1fde2d0d669b1fc11284a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0b2fd4ca54a1fde2d0d669b1fc11284a">&#9670;&nbsp;</a></span>atcacert_get_tbs_digest()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_get_tbs_digest </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>tbs_digest</em>[32]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the SHA256 digest of certificate's TBS data. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to get the TBS data pointer for. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">tbs_digest</td><td>TBS data digest will be returned here. 32 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gad2e2ceb6fb7614254a94e89ba244fee7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad2e2ceb6fb7614254a94e89ba244fee7">&#9670;&nbsp;</a></span>atcacert_is_device_loc_overlap()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_is_device_loc_overlap </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *&#160;</td>
          <td class="paramname"><em>device_loc1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *&#160;</td>
          <td class="paramname"><em>device_loc2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Determines if the two device locations overlap. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">device_loc1</td><td>First device location to check. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">device_loc2</td><td>Second device location o check. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 (false) if they don't overlap, non-zero if the do overlap. </dd></dl>

</div>
</div>
<a id="ga2e29c301e8378aeb99ec3675a4b9d7a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2e29c301e8378aeb99ec3675a4b9d7a0">&#9670;&nbsp;</a></span>atcacert_max_cert_size()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_max_cert_size </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>max_cert_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Return the maximum possible certificate size in bytes for a given cert def. Certificate can be variable size, so this gives an appropriate buffer size when reading the certificates. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition to find a max size for. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">max_cert_size</td><td>Maximum certificate size will be returned here in bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga593780a1837f517ce75bb19d9c5c9db7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga593780a1837f517ce75bb19d9c5c9db7">&#9670;&nbsp;</a></span>atcacert_merge_device_loc()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_merge_device_loc </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *&#160;</td>
          <td class="paramname"><em>device_locs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>device_locs_count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>device_locs_max_count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *&#160;</td>
          <td class="paramname"><em>device_loc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>block_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Merge a new device location into a list of device locations. If the new location overlaps with an existing location, the existing one will be modified to encompass both. Otherwise the new location is appended to the end of the list. </p>
<p>The block_size parameter will adjust all added device locations to have an offset and count that aligns with that block size. This allows one to generate a list of device locations that matches specific read/write semantics (e.g. 4 byte or 32 byte reads). Note that this block_size only applies to the device_loc being added. Existing device locations in the list won't be modified to match the block size.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">device_locs</td><td>Existing device location list to merge the new device location into. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">device_locs_count</td><td>As input, the existing number of items in the device_locs list. As output, the new size of the device_locs list. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">device_locs_max_count</td><td>Maximum number of items the device_locs list can hold. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">device_loc</td><td>New device location to be merged into the device_locs list. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">block_size</td><td>Block size to align all offsets and counts to when adding device location.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga7337facc592df42d585b22345e333ae3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7337facc592df42d585b22345e333ae3">&#9670;&nbsp;</a></span>atcacert_public_key_add_padding()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void atcacert_public_key_add_padding </td>
          <td>(</td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>raw_key</em>[64], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>padded_key</em>[72]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Takes a raw P256 ECC public key and converts it to the padded version used by ATECC devices. Input and output buffers can point to the same location to do an in-place transform. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">raw_key</td><td>Public key as X and Y integers concatenated together. 64 bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">padded_key</td><td>Padded key is returned in this buffer. X and Y integers are padded with 4 bytes of 0 in the MSB. 72 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gadb83dfb792f1e6e90ce6a3d39f64e129"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadb83dfb792f1e6e90ce6a3d39f64e129">&#9670;&nbsp;</a></span>atcacert_public_key_remove_padding()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void atcacert_public_key_remove_padding </td>
          <td>(</td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>padded_key</em>[72], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t&#160;</td>
          <td class="paramname"><em>raw_key</em>[64]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Takes a padded public key used by ATECC devices and converts it to a raw P256 ECC public key. Input and output buffers can point to the same location to do an in-place transform. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">padded_key</td><td>X and Y integers are padded with 4 bytes of 0 in the MSB. 72 bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">raw_key</td><td>Raw key is returned in this buffer. Public key as X and Y integers concatenated together. 64 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gaaf13dfd0ea4e563194cec6e62892b5c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaaf13dfd0ea4e563194cec6e62892b5c4">&#9670;&nbsp;</a></span>atcacert_read_cert()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_read_cert </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>ca_public_key</em>[64], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>cert_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reads the certificate specified by the certificate definition from the ATECC508A device. </p>
<p>This process involves reading the dynamic cert data from the device and combining it with the template found in the certificate definition.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition describing where to find the dynamic certificate information on the device and how to incorporate it into the template. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ca_public_key</td><td>The ECC P256 public key of the certificate authority that signed this certificate. Formatted as the 32 byte X and Y integers concatenated together (64 bytes total). Set to NULL if the authority key id is not needed, set properly in the cert_def template, or stored on the device as specifed in the cert_def cert_elements. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">cert</td><td>Buffer to received the certificate. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert_size</td><td>As input, the size of the cert buffer in bytes. As output, the size of the certificate returned in cert in bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga9a6222ede3a3f3f331882b613066b8a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9a6222ede3a3f3f331882b613066b8a8">&#9670;&nbsp;</a></span>atcacert_read_device_loc()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_read_device_loc </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga0fb6e40d2f1496215af2f9ae23c861a0">atcacert_device_loc_t</a> *&#160;</td>
          <td class="paramname"><em>device_loc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read the data from a device location. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">device_loc</td><td>Device location to read data from. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">data</td><td>Data read is returned here.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga7b22f63ccda2cba10d5ca3dd9c39a06c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7b22f63ccda2cba10d5ca3dd9c39a06c">&#9670;&nbsp;</a></span>atcacert_set_auth_key_id()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_set_auth_key_id </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>auth_public_key</em>[64]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the authority key ID in a certificate. Note that this takes the actual public key creates a key ID from it. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert</td><td>Certificate to update. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">auth_public_key</td><td>Authority public key as X and Y integers concatenated together. 64 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga94a3b57e412fe2cfddf92fdc8e54a41e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga94a3b57e412fe2cfddf92fdc8e54a41e">&#9670;&nbsp;</a></span>atcacert_set_auth_key_id_raw()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_set_auth_key_id_raw </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>auth_key_id</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the authority key ID in a certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert</td><td>Certificate to update. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">auth_key_id</td><td>Authority key ID. Same size as defined in the cert_def.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga5dacb3927ef7eacfaf8c4e28641f7bce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5dacb3927ef7eacfaf8c4e28641f7bce">&#9670;&nbsp;</a></span>atcacert_set_cert_element()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_set_cert_element </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae7c32139e6dce0fe25b4598299a77df6">atcacert_cert_loc_t</a> *&#160;</td>
          <td class="paramname"><em>cert_loc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>data_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets an element in a certificate. The data_size must match the size in cert_loc. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_loc</td><td>Certificate location for this element. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert</td><td>Certificate to update. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>Element data to insert into the certificate. Buffer must contain cert_loc.count bytes to be copied into the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data_size</td><td>Size of the data in bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga0a5a5fb234b9aa7093ae3a0bb2785f73"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0a5a5fb234b9aa7093ae3a0bb2785f73">&#9670;&nbsp;</a></span>atcacert_set_cert_sn()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_set_cert_sn </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>max_cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert_sn</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_sn_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the certificate serial number in a certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert</td><td>Certificate to update. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_cert_size</td><td>Maximum size of the cert buffer. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_sn</td><td>Certificate serial number. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_sn_size</td><td>Size of the certificate serial number in bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga2e2c59c41193e71b1a4b96f58642bb49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2e2c59c41193e71b1a4b96f58642bb49">&#9670;&nbsp;</a></span>atcacert_set_comp_cert()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_set_comp_cert </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>max_cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>comp_cert</em>[72]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the signature, issue date, expire date, and signer ID found in the compressed certificate. This also checks fields common between the cert_def and the compressed certificate to make sure they match. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert</td><td>Certificate to update. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert_size</td><td>As input, size of the certificate (cert) in bytes. As output, the new size of the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_cert_size</td><td>Maximum size of the cert buffer. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">comp_cert</td><td>Compressed certificate. 72 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success. ATCACERT_E_WRONG_CERT_DEF if the template ID, chain ID, and/or SN source don't match between the cert_def and the compressed certificate. </dd></dl>

</div>
</div>
<a id="gad499cd0bdce799a3278f99c80e0f9143"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad499cd0bdce799a3278f99c80e0f9143">&#9670;&nbsp;</a></span>atcacert_set_expire_date()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_set_expire_date </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the expire date (notAfter) in a certificate. Will be formatted according to the date format specified in the certificate definition. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert</td><td>Certificate to update. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">timestamp</td><td>Expire date.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga36d4893ccd152a8ec18f84f90a5e3cb5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga36d4893ccd152a8ec18f84f90a5e3cb5">&#9670;&nbsp;</a></span>atcacert_set_issue_date()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_set_issue_date </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="a00990.html#ga81a3a91e9aa4aca39ca6fe8a7a94b121">atcacert_tm_utc_t</a> *&#160;</td>
          <td class="paramname"><em>timestamp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the issue date (notBefore) in a certificate. Will be formatted according to the date format specified in the certificate definition. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert</td><td>Certificate to update. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">timestamp</td><td>Issue date.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gaf1f3cdf5e1e65c9abcbe98ae046d9bf2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf1f3cdf5e1e65c9abcbe98ae046d9bf2">&#9670;&nbsp;</a></span>atcacert_set_signature()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_set_signature </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>max_cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>signature</em>[64]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the signature in a certificate. This may alter the size of the X.509 certificates. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert</td><td>Certificate to update. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert_size</td><td>As input, size of the certificate (cert) in bytes. As output, the new size of the certificate. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">max_cert_size</td><td>Maximum size of the cert buffer. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">signature</td><td>Signature as R and S integers concatenated together. 64 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga82ca7cff42ee4496a40076faac7ff6f6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga82ca7cff42ee4496a40076faac7ff6f6">&#9670;&nbsp;</a></span>atcacert_set_signer_id()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_set_signer_id </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>signer_id</em>[2]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the signer ID in a certificate. Will be formatted as 4 upper-case hex digits. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert</td><td>Certificate to update. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">signer_id</td><td>Signer ID.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga4c4d5fe988ebface171689f3aa122e12"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga4c4d5fe988ebface171689f3aa122e12">&#9670;&nbsp;</a></span>atcacert_set_subj_public_key()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_set_subj_public_key </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>subj_public_key</em>[64]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sets the subject public key and subject key ID in a certificate. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition for the certificate. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">cert</td><td>Certificate to update. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">subj_public_key</td><td>Subject public key as X and Y integers concatenated together. 64 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="gaaea332f6f0adfdbed2cbaac15e19a4cc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaaea332f6f0adfdbed2cbaac15e19a4cc">&#9670;&nbsp;</a></span>atcacert_transform_data()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_transform_data </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="a00990.html#ga9026eafcf2dca2c5a4427841e50ac17c">atcacert_transform_t</a>&#160;</td>
          <td class="paramname"><em>transform</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>data_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&#160;</td>
          <td class="paramname"><em>destination</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>destination_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Apply the specified transform to the specified data. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">transform</td><td>Transform to be performed. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>Input data to be transformed. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data_size</td><td>Size of the input data in bytes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">destination</td><td>Destination buffer to hold the transformed data. </td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">destination_size</td><td>As input, the size of the destination buffer. As output the size of the transformed data.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<a id="ga81e92ea606e86051afa84f2fac4898d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga81e92ea606e86051afa84f2fac4898d6">&#9670;&nbsp;</a></span>atcacert_verify_cert_hw()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_verify_cert_hw </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>ca_public_key</em>[64]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Verify a certificate against its certificate authority's public key using the host's ATECC device for crypto functions. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition describing how to extract the TBS and signature components from the certificate specified. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to verify. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ca_public_key</td><td>The ECC P256 public key of the certificate authority that signed this certificate. Formatted as the 32 byte X and Y integers concatenated together (64 bytes total).</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS if the verify succeeds, ATCACERT_VERIFY_FAILED or ATCA_EXECUTION_ERROR if it fails to verify. ATCA_EXECUTION_ERROR may occur when the public key is invalid and doesn't fall on the P256 curve. </dd></dl>

</div>
</div>
<a id="gab78271af8c3e2837810fcdae6e3f5e28"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab78271af8c3e2837810fcdae6e3f5e28">&#9670;&nbsp;</a></span>atcacert_verify_cert_sw()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_verify_cert_sw </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>ca_public_key</em>[64]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Verify a certificate against its certificate authority's public key using software crypto functions.The function is currently not implemented. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition describing how to extract the TBS and signature components from the certificate specified. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Certificate to verify. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the certificate (cert) in bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ca_public_key</td><td>The ECC P256 public key of the certificate authority that signed this certificate. Formatted as the 32 byte X and Y integers concatenated together (64 bytes total).</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_UNIMPLEMENTED , as the function is currently not implemented. </dd></dl>

</div>
</div>
<a id="gafeffa7a36a7b5a343f5f568d090e8eed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafeffa7a36a7b5a343f5f568d090e8eed">&#9670;&nbsp;</a></span>atcacert_verify_response_hw()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_verify_response_hw </td>
          <td>(</td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>device_public_key</em>[64], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>challenge</em>[32], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>response</em>[64]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Verify a client's response to a challenge using the host's ATECC device for crypto functions. </p>
<p>The challenge-response protocol is an ECDSA Sign and Verify. This performs an ECDSA verify on the response returned by the client, verifying the client has the private key counter-part to the public key returned in its certificate.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">device_public_key</td><td>Device public key as read from its certificate. Formatted as the X and Y integers concatenated together. 64 bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">challenge</td><td>Challenge that was sent to the client. 32 bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">response</td><td>Response returned from the client to be verified. 64 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS if the verify succeeds, ATCACERT_VERIFY_FAILED or ATCA_EXECUTION_ERROR if it fails to verify. ATCA_EXECUTION_ERROR may occur when the public key is invalid and doesn't fall on the P256 curve. </dd></dl>

</div>
</div>
<a id="ga9d5bf9ec84d28a0412377818805c32c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9d5bf9ec84d28a0412377818805c32c4">&#9670;&nbsp;</a></span>atcacert_verify_response_sw()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_verify_response_sw </td>
          <td>(</td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>device_public_key</em>[64], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>challenge</em>[32], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t&#160;</td>
          <td class="paramname"><em>response</em>[64]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Verify a client's response to a challenge using software crypto functions.The function is currently not implemented. </p>
<p>The challenge-response protocol is an ECDSA Sign and Verify. This performs an ECDSA verify on the response returned by the client, verifying the client has the private key counter-part to the public key returned in its certificate.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">device_public_key</td><td>Device public key as read from its certificate. Formatted as the X and Y integers concatenated together. 64 bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">challenge</td><td>Challenge that was sent to the client. 32 bytes. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">response</td><td>Response returned from the client to be verified. 64 bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCA_UNIMPLEMENTED , as the function is currently not implemented. </dd></dl>

</div>
</div>
<a id="ga71ea9d7c93c2fecb87a36b1343397fad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga71ea9d7c93c2fecb87a36b1343397fad">&#9670;&nbsp;</a></span>atcacert_write_cert()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int atcacert_write_cert </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00990.html#gae9e78b17340263e97844ccaf72ca16ac">atcacert_def_t</a> *&#160;</td>
          <td class="paramname"><em>cert_def</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const uint8_t *&#160;</td>
          <td class="paramname"><em>cert</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>cert_size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Take a full certificate and write it to the ATECC508A device according to the certificate definition. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_def</td><td>Certificate definition describing where the dynamic certificate information is and how to store it on the device. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert</td><td>Full certificate to be stored. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cert_size</td><td>Size of the full certificate in bytes.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>ATCACERT_E_SUCCESS on success, otherwise an error code. </dd></dl>

</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="ga8b93faeabd399250750a5ed9401d897e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8b93faeabd399250750a5ed9401d897e">&#9670;&nbsp;</a></span>ATCACERT_DATE_FORMAT_SIZES</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const size_t ATCACERT_DATE_FORMAT_SIZES[<a class="el" href="a00990.html#ga82737078e820e6d6beeca7466841e43d">ATCACERT_DATE_FORMAT_SIZES_COUNT</a>]</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li>
  </ul>
</div>
</body>
</html>
